// ets_tracing: off import type { Exit } from "../Exit/index.js" import { bracketExit_ } from "./bracketExit.js" import { unit } from "./core.js" import type { Effect } from "./effect.js" /** * Executes the release effect only if there was an error. * * @ets_data_first bracketOnError_ */ export function bracketOnError( use: (a: A) => Effect, release: (a: A, e: Exit) => Effect, __trace?: string ) { return (acquire: Effect) => bracketOnError_(acquire, use, release, __trace) } /** * Executes the release effect only if there was an error. */ export function bracketOnError_( acquire: Effect, use: (a: A) => Effect, release: (a: A, e: Exit) => Effect, __trace?: string ): Effect { return bracketExit_( acquire, use, (a, e): Effect => (e._tag === "Success" ? unit : release(a, e)), __trace ) }