UNPKG

@chassisjs/hermes

Version:

Production-Ready TypeScript Outbox Pattern

47 lines 1.25 kB
import { assert } from './utils/assert.js'; export class CancellationPromise extends Promise { _resolve; _reject; _state = 'pending'; constructor(executor = () => null) { let _resolve = undefined; let _reject = undefined; super((resolve, reject) => { executor(resolve, reject); _resolve = resolve; _reject = reject; }); assert(_resolve); assert(_reject); this._resolve = _resolve; this._reject = _reject; } reject(reason) { this._state = 'rejected'; this._reject(reason); } resolve(value) { this._state = 'resolved'; this._resolve(value); } get isResolved() { return this._state === 'resolved'; } get isRejected() { return this._state === 'rejected'; } get isPending() { return this._state === 'pending'; } static resolved(value) { const promise = new CancellationPromise(); promise.resolve(value); return promise; } static rejected(value) { const promise = new CancellationPromise(); promise.reject(value); return promise; } } //# sourceMappingURL=CancellablePromise.js.map