diff options
Diffstat (limited to 'lib/internal/fs/rimraf.js')
-rw-r--r-- | lib/internal/fs/rimraf.js | 8 |
1 files changed, 2 insertions, 6 deletions
diff --git a/lib/internal/fs/rimraf.js b/lib/internal/fs/rimraf.js index 17e4fe5c9d..9d5fcad49c 100644 --- a/lib/internal/fs/rimraf.js +++ b/lib/internal/fs/rimraf.js @@ -22,26 +22,22 @@ const { const { join } = require('path'); const { setTimeout } = require('timers'); const notEmptyErrorCodes = new Set(['ENOTEMPTY', 'EEXIST', 'EPERM']); +const retryErrorCodes = new Set(['EBUSY', 'EMFILE', 'ENOTEMPTY', 'EPERM']); const isWindows = process.platform === 'win32'; const epermHandler = isWindows ? fixWinEPERM : _rmdir; const epermHandlerSync = isWindows ? fixWinEPERMSync : _rmdirSync; function rimraf(path, options, callback) { - let timeout = 0; // For EMFILE handling. let retries = 0; _rimraf(path, options, function CB(err) { if (err) { - if ((err.code === 'EBUSY' || err.code === 'ENOTEMPTY' || - err.code === 'EPERM') && retries < options.maxRetries) { + if (retryErrorCodes.has(err.code) && retries < options.maxRetries) { retries++; return setTimeout(_rimraf, retries * 100, path, options, CB); } - if (err.code === 'EMFILE' && timeout < options.emfileWait) - return setTimeout(_rimraf, timeout++, path, options, CB); - // The file is already gone. if (err.code === 'ENOENT') err = null; |