vulpix
Version:
CSP-like channels library
33 lines (32 loc) • 1.12 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.AsyncResult = void 0;
const result_1 = require("../result");
/**
* Asynchronous Result wrapper which is equivalent to Result<T, E> but for async computations.
* Replaces the use of Promise<Result<T, E>> and hides some Promise methods such as `catch` and `finally`
* because it will always resolve.
*/
class AsyncResult {
constructor(promiseLike) {
this.promiseLike = promiseLike;
}
then(onfulfilled, onrejected) {
return this.promiseLike.then(onfulfilled, onrejected);
}
toPromise() {
return Promise.resolve(this.promiseLike);
}
static ok(value) {
return value === null || value === undefined
? new AsyncResult(Promise.resolve(result_1.Result.ok()))
: new AsyncResult(Promise.resolve(result_1.Result.ok(value)));
}
static error(error) {
return new AsyncResult(Promise.resolve(result_1.Result.error(error)));
}
static of(promiseLike) {
return new AsyncResult(promiseLike);
}
}
exports.AsyncResult = AsyncResult;
;