This makes it impossible to hold onto a future without awaiting it, as you must when introducing concurrency. You went down that road earlier in this thread and found it to be a rather confusing mess.
Merely adding noawait
is insufficient, and makes for an even bigger mess, because you'd need to annotate it every time you handle the future, not merely when you introduce it.
For example, it makes async
blocks nonsensical, as I mentioned before:
let x = async { .. }; // OOPS, this is a future so it gets awaited...
let future = noawait async { .. } // ...so you have to do this instead!?