JavaScript runs one thing at a time, on one call stack. Waiting (for the network, for a timer) happens in the browser; when it's done, a callback is queued. Step through two programs and watch where each piece of work is: on the call stack, in the browser, in the microtask queue (promise callbacks, resuming after await) or in the task queue (timers, events).
await suspends only its own function: the function's frame leaves the stack, the caller carries on, and resuming is a microtask.setTimeout was called first?loadStalls no longer on the stack, and what is still holding on to its variables?