@@ -2045,21 +2045,16 @@ function lutimesSync(path, atime, mtime) {
20452045function writeAll (
20462046 fd , isUserFd , buffer , offset , length , signal , encoding , callback ) {
20472047 if ( signal ?. aborted ) {
2048- const abortError = new AbortError ( ) ;
2049- if ( isUserFd ) {
2050- callback ( abortError ) ;
2051- } else {
2052- fs . close ( fd , ( err ) => {
2053- callback ( aggregateTwoErrors ( err , abortError ) ) ;
2054- } ) ;
2055- }
2048+ handleWriteAllErrorCallback ( fd , isUserFd , new AbortError ( ) , callback ) ;
20562049 return ;
20572050 }
20582051
20592052 if ( isCustomIterable ( buffer ) ) {
20602053 writeAllCustomIterable (
20612054 fd , isUserFd , buffer , offset , length , signal , encoding , callback )
2062- . catch ( ( reason ) => { throw reason ; } ) ;
2055+ . catch ( ( reason ) => {
2056+ handleWriteAllErrorCallback ( fd , isUserFd , reason , callback ) ;
2057+ } ) ;
20632058 return ;
20642059 }
20652060 fs . write ( fd , buffer , offset , length , null , ( writeErr , written ) => {
@@ -2082,19 +2077,28 @@ function writeAll(
20822077
20832078async function writeAllCustomIterable (
20842079 fd , isUserFd , buffer , offset , length , signal , encoding , callback ) {
2080+ if ( signal ?. aborted ) {
2081+ handleWriteAllErrorCallback ( fd , isUserFd , new AbortError ( ) , callback ) ;
2082+ return ;
2083+ }
2084+
20852085 const result = await buffer . next ( ) ;
20862086 if ( result . done ) {
2087- fs . close ( fd , callback ) ;
2087+ if ( isUserFd ) {
2088+ callback ( null ) ;
2089+ } else {
2090+ fs . close ( fd , callback ) ;
2091+ }
20882092 return ;
20892093 }
2090- const resultValue = result . value . toString ( ) ;
2091- fs . write ( fd , resultValue , undefined ,
2092- isArrayBufferView ( buffer ) ? resultValue . byteLength : encoding ,
2094+ const resultValue = isArrayBufferView ( result . value ) ?
2095+ result . value : Buffer . from ( String ( result . value ) , encoding ) ;
2096+ fs . write ( fd , resultValue , offset , resultValue . byteLength ,
20932097 null , ( writeErr , _ ) => {
20942098 if ( writeErr ) {
20952099 handleWriteAllErrorCallback ( fd , isUserFd , writeErr , callback ) ;
20962100 } else {
2097- writeAll ( fd , isUserFd , buffer , offset ,
2101+ writeAllCustomIterable ( fd , isUserFd , buffer , offset ,
20982102 length , signal , encoding , callback ) ;
20992103 }
21002104 }
0 commit comments