@@ -74,6 +74,7 @@ const { isArrayBufferView } = require('internal/util/types');
7474const binding = internalBinding ( 'fs' ) ;
7575const { Buffer } = require ( 'buffer' ) ;
7676const {
77+ chainErrors,
7778 codes : {
7879 ERR_FS_FILE_TOO_LARGE ,
7980 ERR_INVALID_ARG_VALUE ,
@@ -826,7 +827,7 @@ function truncate(path, len, callback) {
826827 const req = new FSReqCallback ( ) ;
827828 req . oncomplete = function oncomplete ( er ) {
828829 fs . close ( fd , ( er2 ) => {
829- callback ( er || er2 ) ;
830+ callback ( chainErrors ( er2 , er ) ) ;
830831 } ) ;
831832 } ;
832833 binding . ftruncate ( fd , len , req ) ;
@@ -1294,7 +1295,7 @@ function lchmod(path, mode, callback) {
12941295 // but still try to close, and report closing errors if they occur.
12951296 fs . fchmod ( fd , mode , ( err ) => {
12961297 fs . close ( fd , ( err2 ) => {
1297- callback ( err || err2 ) ;
1298+ callback ( chainErrors ( err2 , err ) ) ;
12981299 } ) ;
12991300 } ) ;
13001301 } ) ;
@@ -1462,8 +1463,11 @@ function writeAll(fd, isUserFd, buffer, offset, length, signal, callback) {
14621463 if ( isUserFd ) {
14631464 callback ( lazyDOMException ( 'The operation was aborted' , 'AbortError' ) ) ;
14641465 } else {
1465- fs . close ( fd , function ( ) {
1466- callback ( lazyDOMException ( 'The operation was aborted' , 'AbortError' ) ) ;
1466+ fs . close ( fd , ( err ) => {
1467+ callback ( chainErrors (
1468+ err ,
1469+ lazyDOMException ( 'The operation was aborted' , 'AbortError' )
1470+ ) ) ;
14671471 } ) ;
14681472 }
14691473 return ;
@@ -1474,8 +1478,8 @@ function writeAll(fd, isUserFd, buffer, offset, length, signal, callback) {
14741478 if ( isUserFd ) {
14751479 callback ( writeErr ) ;
14761480 } else {
1477- fs . close ( fd , function close ( ) {
1478- callback ( writeErr ) ;
1481+ fs . close ( fd , ( err ) => {
1482+ callback ( chainErrors ( err , writeErr ) ) ;
14791483 } ) ;
14801484 }
14811485 } else if ( written === length ) {
0 commit comments