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

```ts
function unionSchedules<OutputA, OutputB, Input>(
  a: Schedule<OutputA, Input>,
  b: Schedule<OutputB, Input>,
): Schedule<OutputA | OutputB, Input>;
```

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

Combines two schedules with OR semantics.

Continues while either schedule wants to continue. Uses the minimum delay.

### Example

```ts
// Retry up to 5 times OR up to 30 seconds, whichever is longer
const either = unionSchedules(
  take(5)(exponential("1s")),
  maxElapsed("30s")(forever),
);
```