I don't understand how async functions work with the event loop. Are the await
functions put on the callback queue being executed by the Web API while the rest of the on-stack code runs and the event loop routinely checks if the function has resolved and has a "message"? Or is the await function being shelved on the callback queue and is only put back in the stack and executed when the stack is empty? I'm seeing multiple sources describe it in different ways that seem to directly contradict each other.
