The MAX_DRAIN_ITERATION still has the problem, just pushed back until after N iterations. So in this case are you just optimizing for the case when 1 item is in the queue?