@reactivex/ix-es5-esm
Version:
The Interactive Extensions for JavaScript
32 lines (27 loc) • 759 B
text/typescript
import { isObject } from './util/isiterable.js';
/** @ignore */
export class AbortError extends Error {
constructor(message = 'The operation has been aborted') {
super(message);
Object.setPrototypeOf(this, AbortError.prototype);
Error.captureStackTrace(this, this.constructor);
this.name = 'AbortError';
}
get [Symbol.toStringTag]() {
return 'AbortError';
}
}
export function throwIfAborted(signal?: AbortSignal) {
if (signal && signal.aborted) {
throw new AbortError();
}
}
Object.defineProperty(AbortError, Symbol.hasInstance, {
writable: true,
configurable: true,
value(x: any) {
return (
isObject(x) && (x.constructor.name === 'AbortError' || x[Symbol.toStringTag] === 'AbortError')
);
},
});