44 FunctionPrototypeCall,
55 ObjectDefineProperty,
66 ObjectSetPrototypeOf,
7- Promise,
87 Symbol,
98} = primordials ;
109
@@ -15,6 +14,7 @@ const {
1514 ERR_INVALID_ARG_VALUE ,
1615 } ,
1716} = require ( 'internal/errors' ) ;
17+ const { createDeferredPromise } = require ( 'internal/util' ) ;
1818
1919const {
2020 kFsStatsFieldsNumber,
@@ -319,21 +319,14 @@ async function* watch(filename, options = {}) {
319319 throw new AbortError ( ) ;
320320
321321 const handle = new FSEvent ( ) ;
322- let res ;
323- let rej ;
322+ let { promise, resolve, reject } = createDeferredPromise ( ) ;
324323 const oncancel = ( ) => {
325324 handle . close ( ) ;
326- rej ( new AbortError ( ) ) ;
325+ reject ( new AbortError ( ) ) ;
327326 } ;
328327
329328 try {
330329 signal ?. addEventListener ( 'abort' , oncancel , { once : true } ) ;
331-
332- let promise = new Promise ( ( resolve , reject ) => {
333- res = resolve ;
334- rej = reject ;
335- } ) ;
336-
337330 handle . onchange = ( status , eventType , filename ) => {
338331 if ( status < 0 ) {
339332 const error = uvException ( {
@@ -343,11 +336,11 @@ async function* watch(filename, options = {}) {
343336 } ) ;
344337 error . filename = filename ;
345338 handle . close ( ) ;
346- rej ( error ) ;
339+ reject ( error ) ;
347340 return ;
348341 }
349342
350- res ( { eventType, filename } ) ;
343+ resolve ( { eventType, filename } ) ;
351344 } ;
352345
353346 const err = handle . start ( path , persistent , recursive , encoding ) ;
@@ -366,10 +359,7 @@ async function* watch(filename, options = {}) {
366359
367360 while ( ! signal ?. aborted ) {
368361 yield await promise ;
369- promise = new Promise ( ( resolve , reject ) => {
370- res = resolve ;
371- rej = reject ;
372- } ) ;
362+ ( { promise, resolve, reject } = createDeferredPromise ( ) ) ;
373363 }
374364 throw new AbortError ( ) ;
375365 } finally {
0 commit comments