Inject the ThreadLocalManager propertly
Create tests for WaitingTaskRunner
Do not lock multiple time the same lock

If multiple exceptions happen during the execution of a task, only
lock once.