protected TimerRateLimitProvider(TimeSpan interval, int maxQueuedAuth, IProducerConsumerCollection <TaskCompletionSource <byte> > internalQueue) { Awaiter = (internalQueue = internalQueue ?? GenerateDefaultQueue()) == null ? new TimedTokenProvider <byte>(1, maxQueuedAuth) : new TimedTokenProvider <byte>(1, maxQueuedAuth, internalQueue); Awaiter.AddReadiedAuthTokens(maxQueuedAuth); Timer = new Timer(TriggerAwaiter, null, TimeSpan.Zero, interval); }