fix(xen-api/_interruptOnDisconnect): dont use Promise.race
`Promise.race()` leads to memory leaks if some promises are never resolved. See nodejs/node#17469
This commit is contained in:
parent
7289e856d9
commit
2563be472b
@ -672,12 +672,21 @@ export class Xapi extends EventEmitter {
|
||||
}
|
||||
|
||||
_interruptOnDisconnect(promise) {
|
||||
return Promise.race([
|
||||
promise,
|
||||
this._disconnected.then(() => {
|
||||
throw new Error('disconnected')
|
||||
}),
|
||||
])
|
||||
let listener
|
||||
const pWrapper = new Promise((resolve, reject) => {
|
||||
promise.then(resolve, reject)
|
||||
this.on(
|
||||
DISCONNECTED,
|
||||
(listener = () => {
|
||||
reject(new Error('disconnected'))
|
||||
})
|
||||
)
|
||||
})
|
||||
const clean = () => {
|
||||
this.removeListener(DISCONNECTED, listener)
|
||||
}
|
||||
pWrapper.then(clean, clean)
|
||||
return pWrapper
|
||||
}
|
||||
|
||||
_sessionCallRetryOptions = {
|
||||
|
Loading…
Reference in New Issue
Block a user