From fb0744f4e1ad08597d194fdf99f5a786cd62569c Mon Sep 17 00:00:00 2001 From: Satya Rohith Date: Wed, 20 Mar 2024 13:22:50 +0530 Subject: [PATCH] fix(ext/node): spread args in setImmediate (#22998) Closes https://github.com/denoland/deno/issues/22997 Co-authored-by: Divy Srivastava --- ext/node/polyfills/internal/timers.mjs | 4 ++-- tests/unit_node/timers_test.ts | 17 ++++++++++++++++- 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/ext/node/polyfills/internal/timers.mjs b/ext/node/polyfills/internal/timers.mjs index bdaf95d917..bdf258de63 100644 --- a/ext/node/polyfills/internal/timers.mjs +++ b/ext/node/polyfills/internal/timers.mjs @@ -117,8 +117,8 @@ Timeout.prototype[Symbol.toPrimitive] = function () { }; // Immediate constructor function. -export function Immediate(callback, args) { - this._immediateId = setImmediate_(callback, args); +export function Immediate(callback, ...args) { + this._immediateId = setImmediate_(callback, ...args); } // Make sure the linked list only shows the minimal necessary information. diff --git a/tests/unit_node/timers_test.ts b/tests/unit_node/timers_test.ts index c0b49c998c..5a7668be7a 100644 --- a/tests/unit_node/timers_test.ts +++ b/tests/unit_node/timers_test.ts @@ -30,7 +30,7 @@ Deno.test("[node/timers setInterval]", () => { } }); -Deno.test("[node/timers setImmediate]", () => { +Deno.test("[node/timers setImmediate]", async () => { { const { clearImmediate, setImmediate } = timers; const imm = setImmediate(() => {}); @@ -41,6 +41,21 @@ Deno.test("[node/timers setImmediate]", () => { const imm = timers.setImmediate(() => {}); timers.clearImmediate(imm); } + + { + const deffered = Promise.withResolvers(); + const imm = timers.setImmediate( + (a, b) => { + assert(a === 1); + assert(b === 2); + deffered.resolve(); + }, + 1, + 2, + ); + await deffered; + timers.clearImmediate(imm); + } }); Deno.test("[node/timers/promises setTimeout]", () => {