UNPKG

@jbrowse/core

Version:

JBrowse 2 core libraries used by plugins

43 lines (42 loc) 1.16 kB
import { Observable, fromEvent } from 'rxjs'; class AbortError extends Error { code; } export function checkAbortSignal(signal) { if (!signal) { return; } if (!(signal instanceof AbortSignal)) { throw new TypeError('must pass an AbortSignal'); } if (signal.aborted) { throw makeAbortError(); } } function timeout(ms) { return new Promise(resolve => setTimeout(resolve, ms)); } export async function abortBreakPoint(signal) { await timeout(1); checkAbortSignal(signal); } export function makeAbortError() { if (typeof DOMException !== 'undefined') { return new DOMException('aborted', 'AbortError'); } const e = new AbortError('aborted'); e.code = 'ERR_ABORTED'; return e; } export function observeAbortSignal(signal) { if (!signal) { return new Observable(); } return fromEvent(signal, 'abort'); } export function isAbortException(exception) { return (exception instanceof Error && (exception.name === 'AbortError' || exception.code === 'ERR_ABORTED' || /\b(aborted|aborterror)\b/i.test(exception.message))); }