diff --git a/src/js/node/util.js b/src/js/node/util.js index e47e8fa389c24..a5298d8c267ae 100644 --- a/src/js/node/util.js +++ b/src/js/node/util.js @@ -166,24 +166,26 @@ function defineCustomPromisify(target, callback) { { const { setTimeout: timeout, setImmediate: immediate, setInterval: interval } = globalThis; + let timersPromises; + if (timeout) { defineCustomPromisify(timeout, function setTimeout(arg1) { - const fn = defineCustomPromisify(timeout, require("node:timers/promises").setTimeout); - return fn.$apply(this, arguments); + if (!timersPromises) timersPromises = require("node:timers/promises"); + return timersPromises.setTimeout.$apply(this, arguments); }); } if (immediate) { defineCustomPromisify(immediate, function setImmediate(arg1) { - const fn = defineCustomPromisify(immediate, require("node:timers/promises").setImmediate); - return fn.$apply(this, arguments); + if (!timersPromises) timersPromises = require("node:timers/promises"); + return timersPromises.setImmediate.$apply(this, arguments); }); } if (interval) { defineCustomPromisify(interval, function setInterval(arg1) { - const fn = defineCustomPromisify(interval, require("node:timers/promises").setInterval); - return fn.$apply(this, arguments); + if (!timersPromises) timersPromises = require("node:timers/promises"); + return timersPromises.setInterval.$apply(this, arguments); }); } }