TASK_STATE_DRAINING
if (task->state != TASK_STATE_DRAINING) {
case TASK_STATE_DRAINING:
task->state = TASK_STATE_DRAINING;