import type * as Cause from "../../Cause.ts" import * as Effect from "../../Effect.ts" import * as Fiber from "../../Fiber.ts" import { Abandon } from "../ClusterSchema.ts" export const interrupt: Effect.Effect = Effect.interruptible( Effect.callback(() => { const fiber = Fiber.getCurrent()! fiber.interruptUnsafe(fiber.id, Abandon.annotation) }) ) export const isCause = (cause: Cause.Cause): boolean => cause.reasons.some((reason) => reason._tag === "Interrupt" && reason.annotations.has(Abandon.key))