# Delay

*Exact signatures, fields, and defaults: `delay()`.*

Delay pauses the current path for a duration.

Signature: `delay({ duration: string })` or `delay({ until: string })` —
exactly one of the two arms.

```ts
.step('cooldown', delay({ duration: 'PT30S' }))
.step('embargo', delay({ until: '2026-09-01T09:00:00Z' }))
.step('resumedAt', script({ code: 'return new Date().toISOString();' }))
```

When the scenario needs a resume timestamp, compute it after the wait as shown.
`until` is an ISO-8601 date-time and emits the node's absolute-date arm
(`timerType: 'timeDate'`); an `until` in the past resumes immediately at run
time, so compute future dates from the scenario, not from authoring day.

Normal replay may skip real elapsed time. When timing is itself part of the
requirement, use the real-time wait rung with a deliberately short fixture
duration and measure before/after timestamps; product scheduling behavior still
requires platform evidence.

The duration is ISO-8601: `PT30S`, `PT15M`, `PT2H`, `P1D`, `P1W`.

## At a glance

Pause this path for a duration — or until an absolute date-time — then continue.

Use a real-time rung when elapsed time itself is the requirement.
