fix: prevent double resolve in node close callback

pull/5461/head
Dennis-SEG 2026-01-24 23:20:52 +01:00
parent 1019d52f78
commit 97e70a225b
1 changed files with 9 additions and 2 deletions

View File

@ -322,6 +322,7 @@ Node.prototype.close = function(removed) {
// The callback takes a 'done' callback and (maybe) the removed flag
promises.push(
new Promise((resolve) => {
var resolved = false;
try {
var args = [];
if (callback.length === 2) {
@ -329,13 +330,19 @@ Node.prototype.close = function(removed) {
args.push(!!removed);
}
args.push(() => {
resolve();
if (!resolved) {
resolved = true;
resolve();
}
});
callback.apply(node, args);
} catch(err) {
// TODO: error thrown in node async close callback
// We've never logged this properly.
resolve();
if (!resolved) {
resolved = true;
resolve();
}
}
})
);