@@ -40,6 +40,8 @@ const {
40
40
validateFunction,
41
41
} = require ( 'internal/validators' ) ;
42
42
43
+ const { AsyncResource } = require ( 'async_hooks' ) ;
44
+
43
45
// *Must* match Environment::TickInfo::Fields in src/env.h.
44
46
const kHasTickScheduled = 0 ;
45
47
@@ -132,16 +134,6 @@ function nextTick(callback) {
132
134
queue . push ( tickObject ) ;
133
135
}
134
136
135
- let AsyncResource ;
136
- const defaultMicrotaskResourceOpts = { requireManualDestroy : true } ;
137
- function createMicrotaskResource ( ) {
138
- // Lazy load the async_hooks module
139
- if ( AsyncResource === undefined ) {
140
- AsyncResource = require ( 'async_hooks' ) . AsyncResource ;
141
- }
142
- return new AsyncResource ( 'Microtask' , defaultMicrotaskResourceOpts ) ;
143
- }
144
-
145
137
function runMicrotask ( ) {
146
138
this . runInAsyncScope ( ( ) => {
147
139
const callback = this . callback ;
@@ -153,10 +145,15 @@ function runMicrotask() {
153
145
} ) ;
154
146
}
155
147
148
+ const defaultMicrotaskResourceOpts = { requireManualDestroy : true } ;
149
+
156
150
function queueMicrotask ( callback ) {
157
151
validateFunction ( callback , 'callback' ) ;
158
152
159
- const asyncResource = createMicrotaskResource ( ) ;
153
+ const asyncResource = new AsyncResource (
154
+ 'Microtask' ,
155
+ defaultMicrotaskResourceOpts
156
+ ) ;
160
157
asyncResource . callback = callback ;
161
158
162
159
enqueueMicrotask ( FunctionPrototypeBind ( runMicrotask , asyncResource ) ) ;
0 commit comments