Spaces:
Runtime error
Runtime error
const { addAbortListener } = require('../core/util') | |
const { RequestAbortedError } = require('../core/errors') | |
const kListener = Symbol('kListener') | |
const kSignal = Symbol('kSignal') | |
function abort (self) { | |
if (self.abort) { | |
self.abort() | |
} else { | |
self.onError(new RequestAbortedError()) | |
} | |
} | |
function addSignal (self, signal) { | |
self[kSignal] = null | |
self[kListener] = null | |
if (!signal) { | |
return | |
} | |
if (signal.aborted) { | |
abort(self) | |
return | |
} | |
self[kSignal] = signal | |
self[kListener] = () => { | |
abort(self) | |
} | |
addAbortListener(self[kSignal], self[kListener]) | |
} | |
function removeSignal (self) { | |
if (!self[kSignal]) { | |
return | |
} | |
if ('removeEventListener' in self[kSignal]) { | |
self[kSignal].removeEventListener('abort', self[kListener]) | |
} else { | |
self[kSignal].removeListener('abort', self[kListener]) | |
} | |
self[kSignal] = null | |
self[kListener] = null | |
} | |
module.exports = { | |
addSignal, | |
removeSignal | |
} | |