The following code:
process.nextTick( () => console.log("nextTick 1") );
process.nextTick( () => {
console.log("nextTick 2");
Promise.resolve("Resolved promise inside nextTick").then(console.log);
})
Promise.resolve("Resolved promise 1").then(console.log);
Promise.reject("Rejected promise 2").catch(console.log);
setImmediate( () => {
console.log("setImmediate");
Promise.resolve("Resolved promise inside setImmediate").then(console.log);
Promise.reject("Rejected promise inside setImmediate").catch(console.log);
process.nextTick( () => console.log("nextTick 3") );
})
outputs this in node v14.17.0
Resolved promise 1
Rejected promise 2
nextTick 1
nextTick 2
Resolved promise inside nextTick
setImmediate
nextTick 3
Resolved promise inside setImmediate
Rejected promise inside setImmediate
Why are the first two Promise.then/catch callbacks called before the process.nextTick callbacks ? Shouldn´t process.nextTick callbacks preceed Promise callbacks like in the setImmediate part ?