I can't speak authoritatively, but I can think of some good reasons you might not want to automatically and implicitly await every invocation of an async function.
As designed, calling an async function just returns a Promise, and any Promise can be awaited. This means that I can pass that Promise around, and it also means I can use a Promise-based library (of which there are many) easily from within my async code.
An example? What if I want to launch multiple asynchronous tasks in parallel, and then either wait until the first one finishes (a race) or wait until they all finish? Without explicit await, we'd need some syntax to express this. With explicit await, I can store the Promise and then await it when desired, like this:
//start both tasks in parallel
let fileDataPromise = getFileDataAsync();
let netDataPromise = getNetDataAsync();
//wait until both are finished
let fileData = await fileDataPromise;
let netData = await netDataPromise;
Fortunately there are nice standard library functions for transforming collections of Promises, so we can also just write:
let [fileData, netData] = await Promise.all([
getFileDataAsync(),
getNetDataAsync()
]);