Zero Delay Clamp

setTimeout / setInterval clamp their delay to [1, 2^31-1] ms exactly as Node does: an omitted, zero, negative or oversized delay becomes 1 ms. A chain of "zero-delay" timers therefore advances one millisecond per link — the cadence every Node polling loop relies on — instead of firing in a burst.

const t0 = Date.now();
let n = 0;
function step(): void {
  n++;
  if (n < 200) setTimeout(step, 0);
  else console.log("200 links took at least 150 ms:", Date.now() - t0 >= 150);
}
setTimeout(step);                                            // no delay → 1 ms
setTimeout(() => console.log("huge delay is 1 ms too"), 3000000000);
View source on GitHubexamples/timers/zero_delay_clamp.ts