<PackageReference Include="Polly.Core" Version="8.2.0" />

StrategyHelper

static class StrategyHelper
using System; using System.Runtime.CompilerServices; using System.Threading.Tasks; namespace Polly.Utils { internal static class StrategyHelper { [System.Runtime.CompilerServices.NullableContext(1)] [return: System.Runtime.CompilerServices.Nullable(new byte[] { 0, 0, 1 })] public static ValueTask<Outcome<TResult>> ExecuteCallbackSafeAsync<[System.Runtime.CompilerServices.Nullable(2)] TResult, [System.Runtime.CompilerServices.Nullable(2)] TState>([System.Runtime.CompilerServices.Nullable(new byte[] { 1, 1, 1, 0, 0, 1 })] Func<ResilienceContext, TState, ValueTask<Outcome<TResult>>> callback, ResilienceContext context, TState state) { if (!context.CancellationToken.IsCancellationRequested) try { ValueTask<Outcome<TResult>> task = callback(context, state); if (!task.IsCompleted) return <ExecuteCallbackSafeAsync>g__AwaitTask|0_0<TResult, TState, TResult>(task, context.ContinueOnCapturedContext); return new ValueTask<Outcome<TResult>>(task.GetResult()); } catch (Exception exception) { return new ValueTask<Outcome<TResult>>(Outcome.FromException<TResult>(exception)); } return new ValueTask<Outcome<TResult>>(Outcome.FromException<TResult>(new OperationCanceledException(context.CancellationToken))); } } }