Run below sample, you will see setTimeout callbacks always are executed later than Promise callback. Are there any mechanisms causes this result? or this is not ture?
setTimeout(function() {
console.log(1)
}, 0)
new Promise(function (resolve, reject) {
resolve(2)
}).then(console.log)
setTimeout(function() {
console.log(3)
}, 0)
new Promise(function (resolve, reject) {
resolve(4)
}).then(console.log)
console.log('rush...')