Skip to content

observed setImmediate and setTimeout execution order contradicts documentation#7145

@tristanls

Description

@tristanls
  • Version: v6.2.1
  • Platform: Darwin
  • Subsystem: timers

Documentation for setImmediate:

Schedules "immediate" execution of callback after I/O events' callbacks and before timers set by setTimeout and setInterval are triggered.

Demonstration:

console.log("nodejs version",process.versions.node);console.log("start");setTimeout(()=>{console.log("setTimeout 0 callback");},0);setTimeout(()=>{console.log("setTimeout 1 callback");},1);setImmediate(()=>{console.log("setImmediate callback");});setTimeout(()=>{console.log("setTimeout 0 after setImmediate callback");},0);setTimeout(()=>{console.log("setTimeout 1 after setImmediate callback");},1);process.nextTick(()=>{console.log("nextTick callback");});console.log("scheduled");

Observed outputs:

$ node test.js nodejs version 6.2.1 start scheduled nextTick callback setTimeout 0 callback setTimeout 1 callback setImmediate callback setTimeout 0 after setImmediate callback setTimeout 1 after setImmediate callback 
$ node test.js nodejs version 6.2.1 start scheduled nextTick callback setTimeout 0 callback setTimeout 1 callback setTimeout 0 after setImmediate callback setTimeout 1 after setImmediate callback setImmediate callback 

Expected output:

$ node test.js nodejs version 6.2.1 start scheduled nextTick callback setImmediate callback setTimeout 0 callback setTimeout 1 callback setTimeout 0 after setImmediate callback setTimeout 1 after setImmediate callback 

Metadata

Metadata

Assignees

Labels

confirmed-bugIssues with confirmed bugs.help wantedIssues that need assistance from volunteers or PRs that need help to proceed.timersIssues and PRs related to the timers subsystem / setImmediate, setInterval, setTimeout.

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions