Pergunta de entrevista da empresa Turing

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.