File tree Expand file tree Collapse file tree 3 files changed +21
-24
lines changed Expand file tree Collapse file tree 3 files changed +21
-24
lines changed Original file line number Diff line number Diff line change @@ -6773,8 +6773,8 @@ changes:
67736773   description: No longer experimental. 
67746774--> 
67756775
6776- Calls `  dir .close ()`  and returns a promise that fulfills when the 
6777- dir  is closed .
6776+ Calls `  dir .close ()`  if the directory handle is open,  and returns a promise that
6777+ fulfills when disposal  is complete .
67786778
67796779#### `  dir[Symbol .dispose ]()` 
67806780
@@ -6786,7 +6786,8 @@ changes:
67866786   description: No longer experimental. 
67876787--> 
67886788
6789- Calls `  dir .closeSync ()`  and returns ` undefined ` .
6789+ Calls `  dir .closeSync ()`  if the directory handle is open, and returns
6790+ ` undefined ` .
67906791
67916792### Class: `  fs .Dirent ` 
67926793
Original file line number Diff line number Diff line change @@ -24,7 +24,6 @@ const {
2424
2525const  {  FSReqCallback }  =  binding ; 
2626const  { 
27-   assignFunctionName, 
2827  promisify, 
2928}  =  require ( 'internal/util' ) ; 
3029const  { 
@@ -296,31 +295,24 @@ class Dir {
296295      await  this . #closePromisified( ) ; 
297296    } 
298297  } 
298+ 
299+   [ SymbolDispose ] ( )  { 
300+     if  ( this . #closed)  return ; 
301+     this . closeSync ( ) ; 
302+   } 
303+ 
304+   async  [ SymbolAsyncDispose ] ( )  { 
305+     if  ( this . #closed)  return ; 
306+     await  this . #closePromisified( ) ; 
307+   } 
299308} 
300309
301- const  nonEnumerableDescriptor  =  { 
302-   enumerable : false , 
303-   writable : true , 
304-   configurable : true , 
305- } ; 
306310ObjectDefineProperties ( Dir . prototype ,  { 
307-   [ SymbolDispose ] : { 
308-     __proto__ : null , 
309-     ...nonEnumerableDescriptor , 
310-     value : assignFunctionName ( SymbolDispose ,  function ( )  { 
311-       this . closeSync ( ) ; 
312-     } ) , 
313-   } , 
314-   [ SymbolAsyncDispose ] : { 
315-     __proto__ : null , 
316-     ...nonEnumerableDescriptor , 
317-     value : assignFunctionName ( SymbolAsyncDispose ,  function ( )  { 
318-       this . close ( ) ; 
319-     } ) , 
320-   } , 
321311  [ SymbolAsyncIterator ] : { 
322312    __proto__ : null , 
323-     ...nonEnumerableDescriptor , 
313+     enumerable : false , 
314+     writable : true , 
315+     configurable : true , 
324316    value : Dir . prototype . entries , 
325317  } , 
326318} ) ; 
Original file line number Diff line number Diff line change @@ -11,10 +11,14 @@ async function explicitCall() {
1111
1212  const  dh  =  await  fs . opendir ( __dirname ) ; 
1313  await  dh [ Symbol . asyncDispose ] ( ) ; 
14+   // Repeat invocations should not reject 
15+   await  dh [ Symbol . asyncDispose ] ( ) ; 
1416  await  assert . rejects ( dh . read ( ) ,  {  code : 'ERR_DIR_CLOSED'  } ) ; 
1517
1618  const  dhSync  =  opendirSync ( __dirname ) ; 
1719  dhSync [ Symbol . dispose ] ( ) ; 
20+   // Repeat invocations should not throw 
21+   dhSync [ Symbol . dispose ] ( ) ; 
1822  assert . throws ( ( )  =>  dhSync . readSync ( ) ,  {  code : 'ERR_DIR_CLOSED'  } ) ; 
1923} 
2024
 
 
   
 
     
   
   
          
    
    
     
    
      
     
     
    You can’t perform that action at this time.
  
 
    
  
    
      
        
     
       
      
     
   
 
    
    
  
 
  
 
     
    
0 commit comments