Fwiw, c# wasn't even the first dotnet language with it. F# had async computation expressions a few years earlier.
One of the things I liked best about F#.
Haskell allows more generalized do blocks because of HKTs. I blogged about this a few years ago. https://www.sparxeng.com/blog/software/higher-kinded-fun-in-.... (Granted, I've never had a use for that beyond code golf).
And C# is nice because you can await anywhere in an expression instead of just at a "let!" declaration. This is something I do miss when using F#.
But agreed, F# is usually my language of choice.