4
4
FunctionPrototypeCall,
5
5
ObjectDefineProperty,
6
6
ObjectSetPrototypeOf,
7
- Promise,
8
7
Symbol,
9
8
} = primordials ;
10
9
@@ -15,6 +14,7 @@ const {
15
14
ERR_INVALID_ARG_VALUE ,
16
15
} ,
17
16
} = require ( 'internal/errors' ) ;
17
+ const { createDeferredPromise } = require ( 'internal/util' ) ;
18
18
19
19
const {
20
20
kFsStatsFieldsNumber,
@@ -319,21 +319,14 @@ async function* watch(filename, options = {}) {
319
319
throw new AbortError ( ) ;
320
320
321
321
const handle = new FSEvent ( ) ;
322
- let res ;
323
- let rej ;
322
+ let { promise, resolve, reject } = createDeferredPromise ( ) ;
324
323
const oncancel = ( ) => {
325
324
handle . close ( ) ;
326
- rej ( new AbortError ( ) ) ;
325
+ reject ( new AbortError ( ) ) ;
327
326
} ;
328
327
329
328
try {
330
329
signal ?. addEventListener ( 'abort' , oncancel , { once : true } ) ;
331
-
332
- let promise = new Promise ( ( resolve , reject ) => {
333
- res = resolve ;
334
- rej = reject ;
335
- } ) ;
336
-
337
330
handle . onchange = ( status , eventType , filename ) => {
338
331
if ( status < 0 ) {
339
332
const error = uvException ( {
@@ -343,11 +336,11 @@ async function* watch(filename, options = {}) {
343
336
} ) ;
344
337
error . filename = filename ;
345
338
handle . close ( ) ;
346
- rej ( error ) ;
339
+ reject ( error ) ;
347
340
return ;
348
341
}
349
342
350
- res ( { eventType, filename } ) ;
343
+ resolve ( { eventType, filename } ) ;
351
344
} ;
352
345
353
346
const err = handle . start ( path , persistent , recursive , encoding ) ;
@@ -366,10 +359,7 @@ async function* watch(filename, options = {}) {
366
359
367
360
while ( ! signal ?. aborted ) {
368
361
yield await promise ;
369
- promise = new Promise ( ( resolve , reject ) => {
370
- res = resolve ;
371
- rej = reject ;
372
- } ) ;
362
+ ( { promise, resolve, reject } = createDeferredPromise ( ) ) ;
373
363
}
374
364
throw new AbortError ( ) ;
375
365
} finally {
0 commit comments