The reason why is because it forces your task to have a circular dependency on the scheduler it was scheduled to. So, TaskHandler->cancel() is not only more elegant, it's actually cleaner too - all while doing the exact same job that Scheduler->cancelTask() does.