@@ -71,10 +71,18 @@ function processTicksAndRejections() {
7171
7272 try {
7373 const callback = tock . callback ;
74- if ( tock . args === undefined )
74+ if ( tock . args === undefined ) {
7575 callback ( ) ;
76- else
77- callback ( ...tock . args ) ;
76+ } else {
77+ const args = tock . args ;
78+ switch ( args . length ) {
79+ case 1 : callback ( args [ 0 ] ) ; break ;
80+ case 2 : callback ( args [ 0 ] , args [ 1 ] ) ; break ;
81+ case 3 : callback ( args [ 0 ] , args [ 1 ] , args [ 2 ] ) ; break ;
82+ case 4 : callback ( args [ 0 ] , args [ 1 ] , args [ 2 ] , args [ 3 ] ) ; break ;
83+ default : callback ( ...args ) ;
84+ }
85+ }
7886 } finally {
7987 if ( destroyHooksExist ( ) )
8088 emitDestroy ( asyncId ) ;
@@ -88,22 +96,6 @@ function processTicksAndRejections() {
8896 setHasRejectionToWarn ( false ) ;
8997}
9098
91- class TickObject {
92- constructor ( callback , args ) {
93- this . callback = callback ;
94- this . args = args ;
95-
96- const asyncId = newAsyncId ( ) ;
97- const triggerAsyncId = getDefaultTriggerAsyncId ( ) ;
98- this [ async_id_symbol ] = asyncId ;
99- this [ trigger_async_id_symbol ] = triggerAsyncId ;
100-
101- if ( initHooksExist ( ) ) {
102- emitInit ( asyncId , 'TickObject' , triggerAsyncId , this ) ;
103- }
104- }
105- }
106-
10799// `nextTick()` will not enqueue any callback when the process is about to
108100// exit since the callback would not have a chance to be executed.
109101function nextTick ( callback ) {
@@ -127,7 +119,17 @@ function nextTick(callback) {
127119
128120 if ( queue . isEmpty ( ) )
129121 setHasTickScheduled ( true ) ;
130- queue . push ( new TickObject ( callback , args ) ) ;
122+ const asyncId = newAsyncId ( ) ;
123+ const triggerAsyncId = getDefaultTriggerAsyncId ( ) ;
124+ const tickObject = {
125+ [ async_id_symbol ] : asyncId ,
126+ [ trigger_async_id_symbol ] : triggerAsyncId ,
127+ callback,
128+ args
129+ } ;
130+ if ( initHooksExist ( ) )
131+ emitInit ( asyncId , 'TickObject' , triggerAsyncId , tickObject ) ;
132+ queue . push ( tickObject ) ;
131133}
132134
133135let AsyncResource ;
0 commit comments