StrategyHelper
using System;
using System.Runtime.CompilerServices;
using System.Threading.Tasks;
namespace Polly.Utils
{
    internal static class StrategyHelper
    {
        [NullableContext(1)]
        [return: Nullable(new byte[] {
            0,
            0,
            1
        })]
        public static ValueTask<Outcome<TResult>> ExecuteCallbackSafeAsync<[Nullable(2)] TResult, [Nullable(2)] TState>([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)));
        }
    }
}