internal static async Task <IBleResult> TimeoutBleOperationAsync(this IExecutor executor, Func <CancellationToken, Task <IBleResult> > taskProvider, TimeSpan timeout, CancellationToken cancellationToken = default) { IBleResult result; try { result = await executor.CancelAfterTimeoutAsync(taskProvider, timeout, true, cancellationToken).ConfigureAwait(false); } catch (TimeoutException ex) { result = BleResult.Failure(BleFailure.OperationTimeout, ex); } catch (Exception ex) { result = BleResult.Failure(ex); } return(result); }