When the awaited work finishes, your function picks up exactly where it left off.
This is what lets a single-threaded language stay responsive while it waits on the slow stuff: network requests, file reads, timers. The page doesn't freeze, because nothing is truly blocked.