<PackageReference Include="Polly" Version="8.0.0-alpha.1" />

AsyncPolicy

public abstract class AsyncPolicy : PolicyBase, IAsyncPolicy, IsPolicy
using Polly.Utilities; using Polly.Wrap; using System; using System.Collections.Generic; using System.Diagnostics; using System.Runtime.CompilerServices; using System.Threading; using System.Threading.Tasks; namespace Polly { public abstract class AsyncPolicy : PolicyBase, IAsyncPolicy, IsPolicy { public AsyncPolicy WithPolicyKey(string policyKey) { if (policyKeyInternal != null) throw PolicyBase.PolicyKeyMustBeImmutableException; policyKeyInternal = policyKey; return this; } IAsyncPolicy IAsyncPolicy.WithPolicyKey(string policyKey) { if (policyKeyInternal != null) throw PolicyBase.PolicyKeyMustBeImmutableException; policyKeyInternal = policyKey; return this; } [System.Runtime.CompilerServices.NullableContext(1)] internal AsyncPolicy(ExceptionPredicates exceptionPredicates) : base(exceptionPredicates) { } [System.Runtime.CompilerServices.NullableContext(2)] protected AsyncPolicy(PolicyBuilder policyBuilder = null) : base(policyBuilder) { } [DebuggerStepThrough] public Task ExecuteAsync(Func<Task> action) { return ExecuteAsync((Context _, CancellationToken _) => action(), new Context(), DefaultCancellationToken, false); } [DebuggerStepThrough] public Task ExecuteAsync(Func<Context, Task> action, IDictionary<string, object> contextData) { return ExecuteAsync((Context ctx, CancellationToken _) => action(ctx), new Context(contextData), DefaultCancellationToken, false); } [DebuggerStepThrough] public Task ExecuteAsync(Func<Context, Task> action, Context context) { return ExecuteAsync((Context ctx, CancellationToken _) => action(ctx), context, DefaultCancellationToken, false); } [DebuggerStepThrough] public Task ExecuteAsync(Func<CancellationToken, Task> action, CancellationToken cancellationToken) { return ExecuteAsync((Context _, CancellationToken ct) => action(ct), new Context(), cancellationToken, false); } [DebuggerStepThrough] public Task ExecuteAsync(Func<Context, CancellationToken, Task> action, IDictionary<string, object> contextData, CancellationToken cancellationToken) { return ExecuteAsync(action, new Context(contextData), cancellationToken, false); } [DebuggerStepThrough] public Task ExecuteAsync(Func<Context, CancellationToken, Task> action, Context context, CancellationToken cancellationToken) { return ExecuteAsync(action, context, cancellationToken, false); } [DebuggerStepThrough] public Task ExecuteAsync(Func<CancellationToken, Task> action, CancellationToken cancellationToken, bool continueOnCapturedContext) { return ExecuteAsync((Context _, CancellationToken ct) => action(ct), new Context(), cancellationToken, continueOnCapturedContext); } [DebuggerStepThrough] public Task ExecuteAsync(Func<Context, CancellationToken, Task> action, IDictionary<string, object> contextData, CancellationToken cancellationToken, bool continueOnCapturedContext) { return ExecuteAsync(action, new Context(contextData), cancellationToken, continueOnCapturedContext); } [AsyncStateMachine(typeof(<ExecuteAsync>d__12))] [DebuggerStepThrough] public Task ExecuteAsync(Func<Context, CancellationToken, Task> action, Context context, CancellationToken cancellationToken, bool continueOnCapturedContext) { <ExecuteAsync>d__12 stateMachine = default(<ExecuteAsync>d__12); stateMachine.<>t__builder = AsyncTaskMethodBuilder.Create(); stateMachine.<>4__this = this; stateMachine.action = action; stateMachine.context = context; stateMachine.cancellationToken = cancellationToken; stateMachine.continueOnCapturedContext = continueOnCapturedContext; stateMachine.<>1__state = -1; stateMachine.<>t__builder.Start(ref stateMachine); return stateMachine.<>t__builder.Task; } [DebuggerStepThrough] public Task<TResult> ExecuteAsync<TResult>(Func<Task<TResult>> action) { return ExecuteAsync((Context _, CancellationToken _) => action(), new Context(), DefaultCancellationToken, false); } [DebuggerStepThrough] public Task<TResult> ExecuteAsync<TResult>(Func<Context, Task<TResult>> action, IDictionary<string, object> contextData) { return ExecuteAsync((Context ctx, CancellationToken _) => action(ctx), new Context(contextData), DefaultCancellationToken, false); } [DebuggerStepThrough] public Task<TResult> ExecuteAsync<TResult>(Func<Context, Task<TResult>> action, Context context) { return ExecuteAsync((Context ctx, CancellationToken _) => action(ctx), context, DefaultCancellationToken, false); } [DebuggerStepThrough] public Task<TResult> ExecuteAsync<TResult>(Func<CancellationToken, Task<TResult>> action, CancellationToken cancellationToken) { return ExecuteAsync((Context _, CancellationToken ct) => action(ct), new Context(), cancellationToken, false); } [DebuggerStepThrough] public Task<TResult> ExecuteAsync<TResult>(Func<Context, CancellationToken, Task<TResult>> action, IDictionary<string, object> contextData, CancellationToken cancellationToken) { return ExecuteAsync(action, new Context(contextData), cancellationToken, false); } [DebuggerStepThrough] public Task<TResult> ExecuteAsync<TResult>(Func<Context, CancellationToken, Task<TResult>> action, Context context, CancellationToken cancellationToken) { return ExecuteAsync(action, context, cancellationToken, false); } [DebuggerStepThrough] public Task<TResult> ExecuteAsync<TResult>(Func<CancellationToken, Task<TResult>> action, CancellationToken cancellationToken, bool continueOnCapturedContext) { return ExecuteAsync((Context _, CancellationToken ct) => action(ct), new Context(), cancellationToken, continueOnCapturedContext); } [DebuggerStepThrough] public Task<TResult> ExecuteAsync<TResult>(Func<Context, CancellationToken, Task<TResult>> action, IDictionary<string, object> contextData, CancellationToken cancellationToken, bool continueOnCapturedContext) { return ExecuteAsync(action, new Context(contextData), cancellationToken, continueOnCapturedContext); } [AsyncStateMachine(typeof(<ExecuteAsync>d__21<>))] [DebuggerStepThrough] public Task<TResult> ExecuteAsync<TResult>(Func<Context, CancellationToken, Task<TResult>> action, Context context, CancellationToken cancellationToken, bool continueOnCapturedContext) { <ExecuteAsync>d__21<TResult> stateMachine = default(<ExecuteAsync>d__21<TResult>); stateMachine.<>t__builder = AsyncTaskMethodBuilder<TResult>.Create(); stateMachine.<>4__this = this; stateMachine.action = action; stateMachine.context = context; stateMachine.cancellationToken = cancellationToken; stateMachine.continueOnCapturedContext = continueOnCapturedContext; stateMachine.<>1__state = -1; stateMachine.<>t__builder.Start(ref stateMachine); return stateMachine.<>t__builder.Task; } [DebuggerStepThrough] public Task<PolicyResult> ExecuteAndCaptureAsync(Func<Task> action) { return ExecuteAndCaptureAsync((Context _, CancellationToken _) => action(), new Context(), DefaultCancellationToken, false); } [DebuggerStepThrough] public Task<PolicyResult> ExecuteAndCaptureAsync(Func<Context, Task> action, IDictionary<string, object> contextData) { return ExecuteAndCaptureAsync((Context ctx, CancellationToken _) => action(ctx), new Context(contextData), DefaultCancellationToken, false); } [DebuggerStepThrough] public Task<PolicyResult> ExecuteAndCaptureAsync(Func<Context, Task> action, Context context) { return ExecuteAndCaptureAsync((Context ctx, CancellationToken _) => action(ctx), context, DefaultCancellationToken, false); } [DebuggerStepThrough] public Task<PolicyResult> ExecuteAndCaptureAsync(Func<CancellationToken, Task> action, CancellationToken cancellationToken) { return ExecuteAndCaptureAsync((Context _, CancellationToken ct) => action(ct), new Context(), cancellationToken, false); } [DebuggerStepThrough] public Task<PolicyResult> ExecuteAndCaptureAsync(Func<Context, CancellationToken, Task> action, IDictionary<string, object> contextData, CancellationToken cancellationToken) { return ExecuteAndCaptureAsync(action, new Context(contextData), cancellationToken, false); } [DebuggerStepThrough] public Task<PolicyResult> ExecuteAndCaptureAsync(Func<Context, CancellationToken, Task> action, Context context, CancellationToken cancellationToken) { return ExecuteAndCaptureAsync(action, context, cancellationToken, false); } [DebuggerStepThrough] public Task<PolicyResult> ExecuteAndCaptureAsync(Func<CancellationToken, Task> action, CancellationToken cancellationToken, bool continueOnCapturedContext) { return ExecuteAndCaptureAsync((Context _, CancellationToken ct) => action(ct), new Context(), cancellationToken, continueOnCapturedContext); } [DebuggerStepThrough] public Task<PolicyResult> ExecuteAndCaptureAsync(Func<Context, CancellationToken, Task> action, IDictionary<string, object> contextData, CancellationToken cancellationToken, bool continueOnCapturedContext) { return ExecuteAndCaptureAsync(action, new Context(contextData), cancellationToken, continueOnCapturedContext); } [AsyncStateMachine(typeof(<ExecuteAndCaptureAsync>d__30))] [DebuggerStepThrough] public Task<PolicyResult> ExecuteAndCaptureAsync(Func<Context, CancellationToken, Task> action, Context context, CancellationToken cancellationToken, bool continueOnCapturedContext) { <ExecuteAndCaptureAsync>d__30 stateMachine = default(<ExecuteAndCaptureAsync>d__30); stateMachine.<>t__builder = AsyncTaskMethodBuilder<PolicyResult>.Create(); stateMachine.<>4__this = this; stateMachine.action = action; stateMachine.context = context; stateMachine.cancellationToken = cancellationToken; stateMachine.continueOnCapturedContext = continueOnCapturedContext; stateMachine.<>1__state = -1; stateMachine.<>t__builder.Start(ref stateMachine); return stateMachine.<>t__builder.Task; } [DebuggerStepThrough] public Task<PolicyResult<TResult>> ExecuteAndCaptureAsync<TResult>(Func<Task<TResult>> action) { return ExecuteAndCaptureAsync((Context _, CancellationToken _) => action(), new Context(), DefaultCancellationToken, false); } [DebuggerStepThrough] public Task<PolicyResult<TResult>> ExecuteAndCaptureAsync<TResult>(Func<Context, Task<TResult>> action, IDictionary<string, object> contextData) { return ExecuteAndCaptureAsync((Context ctx, CancellationToken _) => action(ctx), new Context(contextData), DefaultCancellationToken, false); } [DebuggerStepThrough] public Task<PolicyResult<TResult>> ExecuteAndCaptureAsync<TResult>(Func<Context, Task<TResult>> action, Context context) { return ExecuteAndCaptureAsync((Context ctx, CancellationToken _) => action(ctx), context, DefaultCancellationToken, false); } [DebuggerStepThrough] public Task<PolicyResult<TResult>> ExecuteAndCaptureAsync<TResult>(Func<CancellationToken, Task<TResult>> action, CancellationToken cancellationToken) { return ExecuteAndCaptureAsync((Context _, CancellationToken ct) => action(ct), new Context(), cancellationToken, false); } [DebuggerStepThrough] public Task<PolicyResult<TResult>> ExecuteAndCaptureAsync<TResult>(Func<Context, CancellationToken, Task<TResult>> action, IDictionary<string, object> contextData, CancellationToken cancellationToken) { return ExecuteAndCaptureAsync(action, new Context(contextData), cancellationToken, false); } [DebuggerStepThrough] public Task<PolicyResult<TResult>> ExecuteAndCaptureAsync<TResult>(Func<Context, CancellationToken, Task<TResult>> action, Context context, CancellationToken cancellationToken) { return ExecuteAndCaptureAsync(action, context, cancellationToken, false); } [DebuggerStepThrough] public Task<PolicyResult<TResult>> ExecuteAndCaptureAsync<TResult>(Func<CancellationToken, Task<TResult>> action, CancellationToken cancellationToken, bool continueOnCapturedContext) { return ExecuteAndCaptureAsync((Context _, CancellationToken ct) => action(ct), new Context(), cancellationToken, continueOnCapturedContext); } [DebuggerStepThrough] public Task<PolicyResult<TResult>> ExecuteAndCaptureAsync<TResult>(Func<Context, CancellationToken, Task<TResult>> action, IDictionary<string, object> contextData, CancellationToken cancellationToken, bool continueOnCapturedContext) { return ExecuteAndCaptureAsync(action, new Context(contextData), cancellationToken, continueOnCapturedContext); } [AsyncStateMachine(typeof(<ExecuteAndCaptureAsync>d__39<>))] [DebuggerStepThrough] public Task<PolicyResult<TResult>> ExecuteAndCaptureAsync<TResult>(Func<Context, CancellationToken, Task<TResult>> action, Context context, CancellationToken cancellationToken, bool continueOnCapturedContext) { <ExecuteAndCaptureAsync>d__39<TResult> stateMachine = default(<ExecuteAndCaptureAsync>d__39<TResult>); stateMachine.<>t__builder = AsyncTaskMethodBuilder<PolicyResult<TResult>>.Create(); stateMachine.<>4__this = this; stateMachine.action = action; stateMachine.context = context; stateMachine.cancellationToken = cancellationToken; stateMachine.continueOnCapturedContext = continueOnCapturedContext; stateMachine.<>1__state = -1; stateMachine.<>t__builder.Start(ref stateMachine); return stateMachine.<>t__builder.Task; } protected virtual Task ImplementationAsync(Func<Context, CancellationToken, Task> action, Context context, CancellationToken cancellationToken, bool continueOnCapturedContext) { <>c__DisplayClass40_0 <>4__this; return ImplementationAsync(delegate(Context ctx, CancellationToken token) { <>c__DisplayClass40_0.<<ImplementationAsync>b__0>d stateMachine = default(<>c__DisplayClass40_0.<<ImplementationAsync>b__0>d); stateMachine.<>t__builder = AsyncTaskMethodBuilder<EmptyStruct>.Create(); stateMachine.<>4__this = <>4__this; stateMachine.ctx = ctx; stateMachine.token = token; stateMachine.<>1__state = -1; stateMachine.<>t__builder.Start(ref stateMachine); return stateMachine.<>t__builder.Task; }, context, cancellationToken, continueOnCapturedContext); } protected abstract Task<TResult> ImplementationAsync<TResult>(Func<Context, CancellationToken, Task<TResult>> action, Context context, CancellationToken cancellationToken, bool continueOnCapturedContext); public AsyncPolicyWrap WrapAsync(IAsyncPolicy innerPolicy) { if (innerPolicy == null) throw new ArgumentNullException("innerPolicy"); return new AsyncPolicyWrap(this, innerPolicy); } public AsyncPolicyWrap<TResult> WrapAsync<TResult>(IAsyncPolicy<TResult> innerPolicy) { if (innerPolicy == null) throw new ArgumentNullException("innerPolicy"); return new AsyncPolicyWrap<TResult>(this, innerPolicy); } } }