[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) › untilScheduleInput

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

Defined in: [packages/common/src/Schedule.ts:846](https://github.com/evoluhq/evolu/blob/e7144e2bbe9069362b62dec1b64a8aa922b8f1b0/packages/common/src/Schedule.ts#L846)

Continues until the input satisfies a predicate.

Stops (returns `Err(Done<void>)`) when [Predicate](https://evolu.dev/docs/api-reference/common/Types/type-aliases/Predicate) returns `true`.
Useful for stopping retry on specific error conditions.

### Example

```ts
interface MyError extends Typed<"Transient" | "Fatal"> {}

// Stop retrying on fatal errors
const stopOnFatal = untilScheduleInput(
  (error: MyError) => error.type === "Fatal",
)(exponential("100ms"));
```