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

AsyncRateLimitPolicy

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