state-event-target
Version:
Primary state with event-driven replicas.
22 lines (20 loc) • 488 B
text/typescript
export type PromiseWithMeta<T> = Promise<T> & {
status?: "pending" | "fulfilled" | "rejected";
value?: T;
reason?: unknown;
};
export function attachPromiseMeta<T>(p: PromiseLike<T>): PromiseWithMeta<T> {
const promise = p as PromiseWithMeta<T>;
promise.status = "pending";
promise.then(
(v) => {
promise.status = "fulfilled";
promise.value = v;
},
(e) => {
promise.status = "rejected";
promise.reason = e;
},
);
return promise;
}