/// <inheritdoc/> protected override Task <TResult> ImplementationAsync <TResult>( Func <Context, CancellationToken, Task <TResult> > action, Context context, CancellationToken cancellationToken, bool continueOnCapturedContext) { return(AsyncMonkeyEngine.InjectBehaviourImplementationAsync( action, context, cancellationToken, async(ctx, ct) => { var latency = await _latencyProvider(ctx, cancellationToken).ConfigureAwait(continueOnCapturedContext); // to prevent inject latency if token was signaled on latency configuration delegate. cancellationToken.ThrowIfCancellationRequested(); await SystemClock.SleepAsync( latency, cancellationToken) .ConfigureAwait(continueOnCapturedContext); }, InjectionRate, Enabled, continueOnCapturedContext)); }
/// <inheritdoc/> protected override Task <TResult> ImplementationAsync <TResult>(Func <Context, CancellationToken, Task <TResult> > action, Context context, CancellationToken cancellationToken, bool continueOnCapturedContext) { return(AsyncMonkeyEngine.InjectBehaviourImplementationAsync( action, context, cancellationToken, _behaviour, InjectionRate, Enabled, continueOnCapturedContext)); }
/// <inheritdoc/> protected override Task <TResult> ImplementationAsync <TResult>( Func <Context, CancellationToken, Task <TResult> > action, Context context, CancellationToken cancellationToken, bool continueOnCapturedContext) { return(AsyncMonkeyEngine.InjectBehaviourImplementationAsync( action, context, cancellationToken, async(ctx, ct) => await SystemClock.SleepAsync( await _latencyProvider(ctx, cancellationToken).ConfigureAwait(continueOnCapturedContext), InjectLatencyPolicy.DefaultCancellationForInjectedLatency) .ConfigureAwait(continueOnCapturedContext), InjectionRate, Enabled, continueOnCapturedContext)); }