Migrate helper to task.

This makes the helper call the task instead of the other way round, which means that the view doesn't need to care whether or not it's a task that's being "delayed".