summaryrefslogtreecommitdiff
path: root/lib/internal/fs/rimraf.js
diff options
context:
space:
mode:
Diffstat (limited to 'lib/internal/fs/rimraf.js')
-rw-r--r--lib/internal/fs/rimraf.js8
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;