> My takeaway from this is that first-class cancellation tokens are the right approach, but languages need some kind of syntactic sugar to eliminate, or at least reduce, the verbiage for the most common case of propagating it around.
That is also my perspective, but I think the syntactic sugar cannot have much more overhead than `async function`.
The good thing is that it's also a pattern that is highly amenable to syntactic sugar, simply because of how regular it is.
Actually, come to think of it, it is a particular instance of a more common pattern where you receive some state, and propagate it to most (usually, all) further calls that expect it. Scala implicit parameters and variables cover this in the most generic way.
That is also my perspective, but I think the syntactic sugar cannot have much more overhead than `async function`.