export default class AbortController { listeners: Array = [] signal = { aborted: false, addEventListener: (e: string, f: CallableFunction) => { if (e === 'abort') { this.listeners.push(f) } }, } // eslint-disable-next-line @typescript-eslint/no-useless-constructor constructor() {} abort() { if (this.signal.aborted) return this.signal.aborted = true this.listeners.forEach(f => f()) } }