2222'use strict' ;
2323
2424const {
25- ArrayPrototypePush,
2625 MathTrunc,
2726 ObjectDefineProperties,
2827 ObjectDefineProperty,
@@ -131,38 +130,13 @@ function enroll(item, msecs) {
131130 * after `after` milliseconds.
132131 * @param {Function } callback
133132 * @param {number } [after]
134- * @param {any } [arg1]
135- * @param {any } [arg2]
136- * @param {any } [arg3]
133+ * @param {...any } [args]
137134 * @returns {Timeout }
138135 */
139- function setTimeout ( callback , after , arg1 , arg2 , arg3 ) {
136+ function setTimeout ( callback , after , ... args ) {
140137 validateFunction ( callback , 'callback' ) ;
141-
142- let i , args ;
143- switch ( arguments . length ) {
144- // fast cases
145- case 1 :
146- case 2 :
147- break ;
148- case 3 :
149- args = [ arg1 ] ;
150- break ;
151- case 4 :
152- args = [ arg1 , arg2 ] ;
153- break ;
154- default :
155- args = [ arg1 , arg2 , arg3 ] ;
156- for ( i = 5 ; i < arguments . length ; i ++ ) {
157- // Extend array dynamically, makes .apply run much faster in v6.0.0
158- ArrayPrototypePush ( args , arguments [ i ] ) ;
159- }
160- break ;
161- }
162-
163- const timeout = new Timeout ( callback , after , args , false , true ) ;
138+ const timeout = new Timeout ( callback , after , args . length ? args : undefined , false , true ) ;
164139 insert ( timeout , timeout . _idleTimeout ) ;
165-
166140 return timeout ;
167141}
168142
@@ -200,38 +174,13 @@ function clearTimeout(timer) {
200174 * every `repeat` milliseconds.
201175 * @param {Function } callback
202176 * @param {number } [repeat]
203- * @param {any } [arg1]
204- * @param {any } [arg2]
205- * @param {any } [arg3]
177+ * @param {...any } [args]
206178 * @returns {Timeout }
207179 */
208- function setInterval ( callback , repeat , arg1 , arg2 , arg3 ) {
180+ function setInterval ( callback , repeat , ... args ) {
209181 validateFunction ( callback , 'callback' ) ;
210-
211- let i , args ;
212- switch ( arguments . length ) {
213- // fast cases
214- case 1 :
215- case 2 :
216- break ;
217- case 3 :
218- args = [ arg1 ] ;
219- break ;
220- case 4 :
221- args = [ arg1 , arg2 ] ;
222- break ;
223- default :
224- args = [ arg1 , arg2 , arg3 ] ;
225- for ( i = 5 ; i < arguments . length ; i ++ ) {
226- // Extend array dynamically, makes .apply run much faster in v6.0.0
227- ArrayPrototypePush ( args , arguments [ i ] ) ;
228- }
229- break ;
230- }
231-
232- const timeout = new Timeout ( callback , repeat , args , true , true ) ;
182+ const timeout = new Timeout ( callback , repeat , args . length ? args : undefined , true , true ) ;
233183 insert ( timeout , timeout . _idleTimeout ) ;
234-
235184 return timeout ;
236185}
237186
@@ -273,35 +222,12 @@ Timeout.prototype[SymbolToPrimitive] = function() {
273222 * Schedules the immediate execution of `callback`
274223 * after I/O events' callbacks.
275224 * @param {Function } callback
276- * @param {any } [arg1]
277- * @param {any } [arg2]
278- * @param {any } [arg3]
225+ * @param {...any } [args]
279226 * @returns {Immediate }
280227 */
281- function setImmediate ( callback , arg1 , arg2 , arg3 ) {
228+ function setImmediate ( callback , ... args ) {
282229 validateFunction ( callback , 'callback' ) ;
283-
284- let i , args ;
285- switch ( arguments . length ) {
286- // fast cases
287- case 1 :
288- break ;
289- case 2 :
290- args = [ arg1 ] ;
291- break ;
292- case 3 :
293- args = [ arg1 , arg2 ] ;
294- break ;
295- default :
296- args = [ arg1 , arg2 , arg3 ] ;
297- for ( i = 4 ; i < arguments . length ; i ++ ) {
298- // Extend array dynamically, makes .apply run much faster in v6.0.0
299- ArrayPrototypePush ( args , arguments [ i ] ) ;
300- }
301- break ;
302- }
303-
304- return new Immediate ( callback , args ) ;
230+ return new Immediate ( callback , args . length ? args : undefined ) ;
305231}
306232
307233ObjectDefineProperty ( setImmediate , customPromisify , {
0 commit comments