diff --git a/lib/internal/fs/promises.js b/lib/internal/fs/promises.js index 6c39a13349d27b..32ad2123d47db0 100644 --- a/lib/internal/fs/promises.js +++ b/lib/internal/fs/promises.js @@ -66,6 +66,7 @@ const { const { opendir } = require('internal/fs/dir'); const { parseFileMode, + validateAbortSignal, validateBoolean, validateBuffer, validateInteger, @@ -668,14 +669,17 @@ async function writeFile(path, data, options) { data = Buffer.from(data, options.encoding || 'utf8'); } + validateAbortSignal(options.signal); if (path instanceof FileHandle) return writeFileHandle(path, data, options.signal); - const fd = await open(path, flag, options.mode); if (options.signal?.aborted) { throw lazyDOMException('The operation was aborted', 'AbortError'); } - return PromisePrototypeFinally(writeFileHandle(fd, data), fd.close); + + const fd = await open(path, flag, options.mode); + const { signal } = options; + return PromisePrototypeFinally(writeFileHandle(fd, data, signal), fd.close); } async function appendFile(path, data, options) { @@ -692,6 +696,10 @@ async function readFile(path, options) { if (path instanceof FileHandle) return readFileHandle(path, options); + if (options.signal?.aborted) { + throw lazyDOMException('The operation was aborted', 'AbortError'); + } + const fd = await open(path, flag, 0o666); return PromisePrototypeFinally(readFileHandle(fd, options), fd.close); }