[API reference](https://evolu.dev/docs/api-reference) › [@evolu/common](https://evolu.dev/docs/api-reference/common) › [Schedule](https://evolu.dev/docs/api-reference/common/Schedule) › untilScheduleOutput

```ts
function untilScheduleOutput<Output>(
  predicate: Predicate<Output>,
): <Input>(schedule: Schedule<Output, Input>) => Schedule<Output, Input>;
```

Defined in: [packages/common/src/Schedule.ts:1307](https://github.com/evoluhq/evolu/blob/037c390af081e9944d616ff298a729515c5c5ab7/packages/common/src/Schedule.ts#L1307)

Continues until the output satisfies a predicate.

Stops (returns `Err(Done<void>)`) when [Predicate](https://evolu.dev/docs/api-reference/common/Types/type-aliases/Predicate) returns `true`.

### Stopping by output

```ts
import {
  assertErr,
  done,
  exponential,
  testCreateDeps,
  untilScheduleOutput,
  type Millis,
} from "@evolu/common";

// Stop once the exponential delay reaches at least one second.
const limited = untilScheduleOutput((delay: Millis) => delay >= 1000)(
  exponential("100ms"),
);
const step = limited(testCreateDeps());
step(undefined);
step(undefined);
step(undefined);
step(undefined);
assertErr(step(undefined), done());
```