Even then, it still only works at a single syntactic scope.
Between "even unmanaged tasks can be cancelled" and "outside the immediate lexical scope, all bets are off", I think there are simply too many caveats for this to be useful.
It would be better if instead the Task initializer did not allow discarding the task handle, which was/is being discussed here: Pitch: Remove discardableResult from throwing task initializers