# Fx.takeUntil

Takes elements from an Fx until a predicate returns true.
The element that satisfies the predicate is not included in the output.

## Signatures

```ts
export declare const takeUntil: {
    <A>(predicate: (a: A) => boolean): <E, R>(fx: Fx<A, E, R>) => Fx<A, E, R>;
    <A, E, R>(fx: Fx<A, E, R>, predicate: (a: A) => boolean): Fx<A, E, R>;
};
```

## Why

`takeUntil` forwards the ordered prefix before the first match, then completes without emitting
the matching value.

## Ownership and lifetime

Matching triggers the sink's early-exit path, stopping upstream work. No resources are acquired;
earlier failures and consumer interruption remain observable.

## Examples

```ts
import { Fx } from "@typed/fx"
const beforeThree = Fx.fromIterable([1, 2, 3]).pipe(Fx.takeUntil((n) => n === 3))
```
