diff --git a/lib/internal/timers.js b/lib/internal/timers.js index a43819da46cc6a..e265c85dcc1a3d 100644 --- a/lib/internal/timers.js +++ b/lib/internal/timers.js @@ -102,34 +102,13 @@ Timeout.prototype.refresh = function() { return this; }; -function setUnrefTimeout(callback, after, arg1, arg2, arg3) { +function setUnrefTimeout(callback, after) { // Type checking identical to setTimeout() if (typeof callback !== 'function') { throw new ERR_INVALID_CALLBACK(); } - let i, args; - switch (arguments.length) { - // fast cases - case 1: - case 2: - break; - case 3: - args = [arg1]; - break; - case 4: - args = [arg1, arg2]; - break; - default: - args = [arg1, arg2, arg3]; - for (i = 5; i < arguments.length; i++) { - // Extend array dynamically, makes .apply run much faster in v6.0.0 - args[i - 2] = arguments[i]; - } - break; - } - - const timer = new Timeout(callback, after, args, false); + const timer = new Timeout(callback, after, undefined, false); getTimers()._unrefActive(timer); return timer; diff --git a/lib/timers.js b/lib/timers.js index d57b1ceb3eee1d..a81e8bc71ef70a 100644 --- a/lib/timers.js +++ b/lib/timers.js @@ -331,7 +331,7 @@ function listOnTimeout(list, now) { try { const args = timer._timerArgs; - if (!args) + if (args === undefined) timer._onTimeout(); else Reflect.apply(timer._onTimeout, timer, args); @@ -470,8 +470,9 @@ function setTimeout(callback, after, arg1, arg2, arg3) { } setTimeout[internalUtil.promisify.custom] = function(after, value) { + const args = value !== undefined ? [value] : value; return new Promise((resolve) => { - active(new Timeout(resolve, after, [value], false)); + active(new Timeout(resolve, after, args, false)); }); };