@atomist/automation-client
Version:
Atomist API for software low-level client
41 lines • 1.19 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
class Deferred {
constructor() {
this.state = "pending";
this.fate = "unresolved";
this.promise = new Promise((resolve, reject) => {
this.deferredResolve = resolve;
this.deferredReject = reject;
});
this.promise.then(() => this.state = "fulfilled", () => this.state = "rejected");
}
resolve(value) {
if (this.fate === "resolved") {
throw new Error("Deferred cannot be resolved twice");
}
this.fate = "resolved";
this.deferredResolve(value);
}
reject(reason) {
if (this.fate === "resolved") {
throw new Error("Deferred cannot be resolved twice");
}
this.fate = "resolved";
this.deferredReject(reason);
}
isResolved() {
return this.fate === "resolved";
}
isPending() {
return this.state === "pending";
}
isFulfilled() {
return this.state === "fulfilled";
}
isRejected() {
return this.state === "rejected";
}
}
exports.Deferred = Deferred;
//# sourceMappingURL=Deferred.js.map