It is an interesting pattern, and I don't have the experience to participate in the above debate. Yet.
But I would add one point that quite often seems lost in discussions about what direction the language and framework should take: KISS. If it's hard to read and understand for most developers, it's probably not a great idea. If it's hard to explain, it's probably not a good idea. I would like to emphasize that I'm not criticizing Lucian or taking sides in this debate in any way. Just asking that the KISS principle be weighed in when deciding which approach for this or anything is "best"
I have quite often had to deal with code that has evolved over years. On occasion, I even wrote the original, and had to come back later and try to recall what the original thinking was. Most people don't care and don't want to care how easy it will be to maintain their code over time. They like to think "it's not my problem".
Great discussion here, Lucian. Thanks! I first did multi-threaded apps in assembly language back in the 80's (DOS), so I understand threading concepts. But I need to catch up on some of these new framework constructs.
Just learning about these new keywords. Since this is a hard and fast rule, it seems like it might be a good idea to find a way to make the compiler generate either a warning or an error if you use aysnc void in an inappropriate situation.