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

RateLimitPolicy<TResult>

public class RateLimitPolicy<TResult> : Policy<TResult>, IRateLimitPolicy<TResult>, IRateLimitPolicy, IsPolicy
A rate-limit policy that can be applied to synchronous delegates returning a value of type TResult.
using System; using System.Diagnostics; using System.Threading; namespace Polly.RateLimit { public class RateLimitPolicy<TResult> : Policy<TResult>, IRateLimitPolicy<TResult>, IRateLimitPolicy, IsPolicy { private readonly IRateLimiter _rateLimiter; private readonly Func<TimeSpan, Context, TResult> _retryAfterFactory; internal RateLimitPolicy(IRateLimiter rateLimiter, Func<TimeSpan, Context, TResult> retryAfterFactory) : base((PolicyBuilder<TResult>)null) { if (rateLimiter == null) throw new ArgumentNullException("rateLimiter"); _rateLimiter = rateLimiter; _retryAfterFactory = retryAfterFactory; } [DebuggerStepThrough] protected override TResult Implementation(Func<Context, CancellationToken, TResult> action, Context context, CancellationToken cancellationToken) { return RateLimitEngine.Implementation<TResult>(_rateLimiter, _retryAfterFactory, action, context, cancellationToken); } } }