pushing to queue in drain causes assertion

Avoid the case where items were pushed into the queue from the drain function resulting in the worker trying to dispatch more than concurrency allows.