1import type * as Cause from "../../Cause.ts"
2import * as Effect from "../../Effect.ts"
3import * as Fiber from "../../Fiber.ts"
4import { Abandon } from "../ClusterSchema.ts"
5
6export const interrupt: Effect.Effect<never> = Effect.interruptible(
7 Effect.callback<never>(() => {
8 const fiber = Fiber.getCurrent()!
9 fiber.interruptUnsafe(fiber.id, Abandon.annotation)
10 })
11)
12
13export const isCause = (cause: Cause.Cause<unknown>): boolean =>
14 cause.reasons.some((reason) => reason._tag === "Interrupt" && reason.annotations.has(Abandon.key))