Using signals to terminate the task is a break in the way it is done in other parts of the codebase. I would be interested in hearing others opinions on how this should be approached in general. We should try to be (eventually) consistent.