/** * Executes the release effect only if there was an error. * * @tsplus static effect/core/io/Effect.Ops acquireUseReleaseOnError * @tsplus fluent effect/core/io/Effect acquireUseReleaseOnError */ export function acquireUseReleaseOnError( acquire: Effect, use: (a: A) => Effect, release: (a: A) => Effect ): Effect { return Effect.acquireUseReleaseExit( acquire, use, (a, exit) => exit._tag === "Failure" ? release(a) : Effect.unit ) }