let foo = myAsyncFunc()
foo.bar()
Why? Because that's the common case, and the caller shouldn't care whether the function is async or not. If you have a non-async function that you want to change to be async, or the other way around, then you have to change every single call site.The case where you want to store a promise or wait on multiple is actually the edge case, and they could have reused "async" here:
Promise.all([
async myAsyncFunc(),
async someOtherAsyncFunc()
]);
Bonus functionality: If you do "async foo()" and foo() isn't async, the compiler could still ensure that it provided a promise.Sadly, it's too late for this, and everyone's code will suffer as a result. It's way too easy to forget to add "await" to an async call, and doing so leads to failures that can be hard to track down.