Concurrent Async and Normal Await Evaluation Blocks

I don't like this kind of magic. Reasoning about async code is already hard, having the language do the magic for you will make folks forget what happens under the hood, until it does not work as expected. I see the same problem with Automatic Semicolon Insertion.

Here, we have an "async block" that is unlike other blocks in that it is actually maintaining its scope.

With let and const we finally had consistent block scoping in JS ... Just to break that now again?

If this change is seen as too much, I would happily settle for just a nice
syntax sugar for Promise.all

Jup, that sounds like a good idea ...