A coroutine is a recipe
Calling an async function writes down the work without doing it. The await is the verb, and forgetting one leaves a plan nobody runs.
One run, many reads
A task caches its result, so awaiting the same task twice is cheap. Awaiting two fresh calls of the same function runs it twice.