Skip to content

Commit d141fce

Browse files
cjihrigtargos
authored andcommittedFeb 28, 2021
fs: use createDeferredPromise() in promises.watch()
This commit updates fsPromises.watch() to use the createDeferredPromise() utility. PR-URL: #37386 Reviewed-By: Michaël Zasso <targos@protonmail.com> Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com> Reviewed-By: Luigi Pinca <luigipinca@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Darshan Sen <raisinten@gmail.com>
1 parent 4b54c10 commit d141fce

File tree

1 file changed

+6
-16
lines changed

1 file changed

+6
-16
lines changed
 

‎lib/internal/fs/watchers.js

+6-16
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ const {
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

1919
const {
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

Comments
 (0)
Please sign in to comment.