I have been playing with Promises, but I am having trouble understanding what is happening with the following code:
const promise = new Promise((resolve, reject) => {
  console.log('Promise started')
  resolve('Success')
})
setTimeout(() => {
  console.log('Log inside first setTimeout')
}, 0)
promise.then(res => {
  console.log('Promise log after fulfilled ❌')
})
setTimeout(() => {
  console.log('Log inside second setTimeout')
}, 0)
The output is:
Promise started 
Promise log after fulfilled ❌ 
Log inside first setTimeout 
Log inside second setTimeout 
Why not the below output?
Promise started 
Log inside first setTimeout 
Log inside second setTimeout 
Promise log after fulfilled ❌ 
Between setTimeout(fn, 0)fn call and resolve()fn call which will be given priority?
Is it dependent on browser implementation details?
 
     
    