public virtual Task GetLowPriorityWorkAuthorizationAsync()
        {
            // Low priority work differs in a few ways:
            // 1) high priority work is always completed first
            // 2) low priority work does not use queued-up auth tokens
            TaskCompletionSource <byte> tcs = new TaskCompletionSource <byte>();

            // this queue is used internally by our timer
            Queue.AddLow(tcs);
            return(tcs.Task);
        }