Leaving aside historical reason, why there is no “no-await” or “parallel” keyword in all this languges and it seems to be not discussed togather with await?
Why that one needed? Why that matters? – Because if you forget await it’s most likely a logical mistake. And even worth: its a very difficult mistake, because it’s quite hard to find, it even with very good tests (100÷ branch coverage): the code will likely execute sequentially in most cases even without await. But it will break sometime in future.
So having to explicitly say “I really what to parallelize here, it’s not just i forgot to place ‘await’ here” seems to me a very convenient way to avoid this mistakes.
In fact i find it strange to mark “await” everywhere, marking just only “no-await” seems to me much more meaningful, all the rest calls to an async functions should be awaited by default. Why: because it pushes programmers not to do optimization too early. You just do a “sequential-like” program and than, when you made tests and ready to optimise – you add “no-await” keywords to all places. Note that this way you also push library implementers to make async functions which is also very good.
The question is mostly addressed to experts in corresponding standardisation commeties, C++ specifically as one of strict ones.
Please upvote this question if you feel this is an important question and we need experts to notice it.