Merge pull request #5461 from Dennis-SEG/fix/node-close-double-resolve

fix: prevent double resolve in node close callback
pull/5467/head^2
Nick O'Leary 2026-01-26 10:19:13 +00:00 committed by GitHub
commit 6b69500a5c
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
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();
}
}
})
);