Explain how the JavaScript event loop handles asynchronous operations, including the roles of the call stack, task queue, and microtask queue. Provide an example involving setTimeout, Promise, and async/await to demonstrate their execution order.
Check out your Company Bowl for anonymous work chats.