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

AsyncRateLimitPolicy<TResult>

public class AsyncRateLimitPolicy<TResult> : AsyncPolicy<TResult>, IRateLimitPolicy<TResult>, IRateLimitPolicy, IsPolicy
using System; using System.Diagnostics; using System.Runtime.CompilerServices; using System.Threading; using System.Threading.Tasks; namespace Polly.RateLimit { [System.Runtime.CompilerServices.NullableContext(1)] [System.Runtime.CompilerServices.Nullable(new byte[] { 0, 1 })] public class AsyncRateLimitPolicy<[System.Runtime.CompilerServices.Nullable(2)] TResult> : AsyncPolicy<TResult>, IRateLimitPolicy<TResult>, IRateLimitPolicy, IsPolicy { private readonly IRateLimiter _rateLimiter; [System.Runtime.CompilerServices.Nullable(new byte[] { 2, 1, 1 })] private readonly Func<TimeSpan, Context, TResult> _retryAfterFactory; internal AsyncRateLimitPolicy(IRateLimiter rateLimiter, [System.Runtime.CompilerServices.Nullable(new byte[] { 2, 1, 1 })] Func<TimeSpan, Context, TResult> retryAfterFactory) : base((PolicyBuilder<TResult>)null) { if (rateLimiter == null) throw new ArgumentNullException("rateLimiter"); _rateLimiter = rateLimiter; _retryAfterFactory = retryAfterFactory; } [DebuggerStepThrough] protected override Task<TResult> ImplementationAsync(Func<Context, CancellationToken, Task<TResult>> action, Context context, CancellationToken cancellationToken, bool continueOnCapturedContext) { return AsyncRateLimitEngine.ImplementationAsync<TResult>(_rateLimiter, _retryAfterFactory, action, context, cancellationToken, continueOnCapturedContext); } } }