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);
 }