import { Cause, Effect } from "effect" export function refineRejection( evaluate: (signal: AbortSignal) => PromiseLike, refine: (cause: unknown) => E | undefined, ) { return Effect.tryPromise(evaluate).pipe( Effect.catch((error) => { const cause = Cause.isUnknownError(error) ? error.cause : error const refined = refine(cause) if (refined !== undefined) return Effect.fail(refined) return Effect.die(cause) }), ) } export * as EffectPromise from "./promise"