process.nextTick before Promise.resolve().then?

Viewed 476

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 ?

0 Answers
Related