<PackageReference Include="Polly" Version="7.2.4" />

AsyncFallbackPolicy<TResult>

public class AsyncFallbackPolicy<TResult> : AsyncPolicy<TResult>, IFallbackPolicy<TResult>, IFallbackPolicy, IsPolicy
A fallback policy that can be applied to delegates.
using System; using System.Diagnostics; using System.Threading; using System.Threading.Tasks; namespace Polly.Fallback { public class AsyncFallbackPolicy<TResult> : AsyncPolicy<TResult>, IFallbackPolicy<TResult>, IFallbackPolicy, IsPolicy { private Func<DelegateResult<TResult>, Context, Task> _onFallbackAsync; private Func<DelegateResult<TResult>, Context, CancellationToken, Task<TResult>> _fallbackAction; internal AsyncFallbackPolicy(PolicyBuilder<TResult> policyBuilder, Func<DelegateResult<TResult>, Context, Task> onFallbackAsync, Func<DelegateResult<TResult>, Context, CancellationToken, Task<TResult>> fallbackAction) : base(policyBuilder) { if (onFallbackAsync == null) throw new ArgumentNullException("onFallbackAsync"); _onFallbackAsync = onFallbackAsync; if (fallbackAction == null) throw new ArgumentNullException("fallbackAction"); _fallbackAction = fallbackAction; } [DebuggerStepThrough] protected override Task<TResult> ImplementationAsync(Func<Context, CancellationToken, Task<TResult>> action, Context context, CancellationToken cancellationToken, bool continueOnCapturedContext) { return AsyncFallbackEngine.ImplementationAsync<TResult>(action, context, cancellationToken, base.ExceptionPredicates, base.ResultPredicates, _onFallbackAsync, _fallbackAction, continueOnCapturedContext); } } }