> async/await in .NET is actually good because they added async equivalent APIs to nearly all blocking operations
I mean... I get it---it's great how Microsoft put in an effort to add async equivalents to most of your standard operations. But my complaint is about how almost all of those async methods are built upon Task/Task<T> (which, IMO, is a flawed foundation).
> There's also always (from what I've seen) an optional cancellation token parameter that allows an easy mechanism to alleviate backpressure.
> Need an easy way to cancel 100 async requests? Easy, just pass in a cancellation token and cancel it when needed. All the requests will throw an OperationCanceledException which can be cleanly handled.
No significant disagreement from me there. It is nice that most core async methods support (or try to support) cancellation.