diff --git a/lib/fs.js b/lib/fs.js index 6273c975c120ce..25dad8bf2c8410 100644 --- a/lib/fs.js +++ b/lib/fs.js @@ -1320,7 +1320,7 @@ fs.writeFileSync = function(path, data, options) { }; fs.appendFile = function(path, data, options, callback) { - callback = maybeCallback(arguments[arguments.length - 1]); + callback = maybeCallback(callback || options); options = getOptions(options, { encoding: 'utf8', mode: 0o666, flag: 'a' }); // Don't make changes directly on options object diff --git a/test/parallel/test-fs-append-file.js b/test/parallel/test-fs-append-file.js index 025a0ed034cd66..e3e4c273d3292d 100644 --- a/test/parallel/test-fs-append-file.js +++ b/test/parallel/test-fs-append-file.js @@ -144,6 +144,13 @@ fs.open(filename5, 'a+', function(e, fd) { }); }); +// test that a missing callback emits a warning, even if the last argument is a +// function. +const filename6 = join(common.tmpDir, 'append6.txt'); +const warn = 'Calling an asynchronous function without callback is deprecated.'; +common.expectWarning('DeprecationWarning', warn); +fs.appendFile(filename6, console.log); + process.on('exit', function() { assert.strictEqual(12, ncallbacks);