export type PromiseState<T> = | { status: 'loading'; value?: undefined; error?: undefined } | { status: 'resolved'; value: T; error?: undefined } | { status: 'rejected'; value?: undefined; error: Error }; export function fromPromise<T>(promise: Promise<T>): Readable<PromiseState<T>> { return readable<PromiseState<T>>({ status: 'loading' }, (set) => { void promise .then((value) => set({ status: 'resolved', value })) .catch((error) => set({ status: 'rejected', error })); }); }