To avoid liveness problems, at the end of each "limited" we double-check the queue and dispatch any new tasks from it.
At this point, a scheduler is not aware of the fact that thread it effectively free and issues one more unnecessary thread to help.