Timers

setTimeout, setInterval, setImmediate, and microtask scheduling.

Elide provides the familiar timer globals:

  • setTimeout / clearTimeout
  • setInterval / clearInterval
  • setImmediate / clearImmediate
  • queueMicrotask

Timer functions return Node-compatible Timeout or Immediate objects, not numeric IDs. The objects support ref(), unref(), and hasRef(); Timeout also supports refresh().

const timer = setTimeout(() => console.log("done"), 100);
timer.unref();

At a checkpoint, observed ordering is:

  1. process.nextTick
  2. Promise and queueMicrotask callbacks in enqueue order
  3. setImmediate
  4. zero-delay timers
const order = [];
Promise.resolve().then(() => order.push("promise"));
queueMicrotask(() => order.push("microtask"));
setImmediate(() => order.push("immediate"));
setTimeout(() => console.log(order), 0);

The callback must be callable. String handlers are not supported.