Recommended patterns for retries, cancellation, and observability
import tryo from "tryo"; export const runner = tryo({ ignoreAbort: true });
mapError
const runner = tryo({ mapError: (e) => ({ ...e, message: e.message }) });
await runner.run(() => fetch("/api"), { retries: 3, shouldRetry: (attempt, e, ctx) => e.code !== "ABORTED" && ctx.elapsedTime < 5000, });
await runner.run(() => fetch("/api"), { retryDelay: 300, jitter: 0.5, backoffStrategy: "exponential" });