public async Task InvokeAsync(HttpContext context, RequestDelegate next) { if (counter.TryIncrement()) { await next.Invoke(context); counter.Decrement(); } else { context.Response.StatusCode = 503; await context.Response.CompleteAsync(); } }
public static IDisposable TemporaryIncrement(this IParallelRequestsCounter counter) { counter.TryIncrement(); return(new ActionDisposable(counter.Decrement)); }