diff --git a/doc/api/fs.md b/doc/api/fs.md index 3b0fa6416d4674..513da01186ce1e 100644 --- a/doc/api/fs.md +++ b/doc/api/fs.md @@ -199,8 +199,7 @@ changes: * `data` {string|Buffer|TypedArray|DataView|AsyncIterable|Iterable|Stream} * `options` {Object|string} * `encoding` {string|null} **Default:** `'utf8'` - * `flush` {boolean} If `true`, the underlying file descriptor is flushed - prior to closing it. **Default:** `false`. + * `signal` {AbortSignal|undefined} allows aborting an in-progress writeFile. **Default:** `undefined` * Returns: {Promise} Fulfills with `undefined` upon success. Alias of [`filehandle.writeFile()`][]. diff --git a/test/parallel/test-fs-promises-file-handle-append-file.js b/test/parallel/test-fs-promises-file-handle-append-file.js index 90bb6e392516f4..42b6dbee309cec 100644 --- a/test/parallel/test-fs-promises-file-handle-append-file.js +++ b/test/parallel/test-fs-promises-file-handle-append-file.js @@ -39,6 +39,21 @@ async function validateAppendString() { await fileHandle.close(); } -validateAppendBuffer() - .then(validateAppendString) - .then(common.mustCall()); +async function doAppendAndCancel() { + const filePathForHandle = path.resolve(tmpDir, 'dogs-running.txt'); + const fileHandle = await open(filePathForHandle, 'w+'); + const buffer = Buffer.from('dogs running'.repeat(512 * 1024), 'utf8'); + const controller = new AbortController(); + const { signal } = controller; + process.nextTick(() => controller.abort()); + await assert.rejects(fileHandle.appendFile(buffer, { signal }), { + name: 'AbortError' + }); + await fileHandle.close(); +} + +Promise.all([ + validateAppendBuffer(), + validateAppendString(), + doAppendAndCancel(), +]).then(common.mustCall());