Given this code, what is the exact output order and why?setTimeout(() => console.log('timeout'), 0); Promise.resolve().then(() => console.log('promise'));