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

AsyncCircuitBreakerPolicy<TResult>

A circuit-breaker policy that can be applied to async delegates.
using System; using System.Diagnostics; using System.Threading; using System.Threading.Tasks; namespace Polly.CircuitBreaker { public class AsyncCircuitBreakerPolicy<TResult> : AsyncPolicy<TResult>, ICircuitBreakerPolicy<TResult>, ICircuitBreakerPolicy, IsPolicy { internal readonly ICircuitController<TResult> BreakerController; public CircuitState CircuitState => BreakerController.CircuitState; public Exception LastException => BreakerController.LastException; public TResult LastHandledResult => BreakerController.LastHandledResult; internal AsyncCircuitBreakerPolicy(PolicyBuilder<TResult> policyBuilder, ICircuitController<TResult> breakerController) : base(policyBuilder) { BreakerController = breakerController; } public void Isolate() { BreakerController.Isolate(); } public void Reset() { BreakerController.Reset(); } [DebuggerStepThrough] protected override Task<TResult> ImplementationAsync(Func<Context, CancellationToken, Task<TResult>> action, Context context, CancellationToken cancellationToken, bool continueOnCapturedContext) { if (action == null) throw new ArgumentNullException("action"); return AsyncCircuitBreakerEngine.ImplementationAsync<TResult>(action, context, continueOnCapturedContext, base.ExceptionPredicates, base.ResultPredicates, BreakerController, cancellationToken); } } }