Separate task queuing and task evaluation.
Move responsibility of maintaining the current evaluating task, and if it was delayed, to TaskEvaluationQueue.