1import * as Cause from "effect/Cause";
2import * as Effect from "effect/Effect";
3
4// Transport failures and response-read defects can retain the private lease header.
5export const sanitizeExecFailure = <A, E, R>(effect: Effect.Effect<A, E, R>) =>
6 effect.pipe(
7 Effect.catchCause((cause) =>
8 Effect.failCause(
9 Cause.fromReasons(
10 cause.reasons.map((reason) =>
11 Cause.isFailReason(reason)
12 ? Cause.makeFailReason(new Error("Fly exec lease probe failed"))
13 : Cause.isDieReason(reason)
14 ? Cause.makeDieReason(new Error("Fly exec lease probe defect"))
15 : Cause.makeInterruptReason(reason.fiberId),
16 ),
17 ),
18 ),
19 ),
20 );