# Reason `'timeout'`

> Contract 2.0.0 · package sha256 `a857eca95b35921109faf997094bb4192f12527d9d0fcd4be7e97f06425bad6e` · generated from `configurator-runtime.d.ts` and `tables/problems.json` by `services/onsite-scripter/scripts/build-contract-docs.mjs`; edit the source, not this file.

A member of [`Reason`](../api/Reason.md) · stable · since 2.0.0

`timeoutMs` passed without progress, or the hold cap was reached.

## Where the declaration names it

- [`Outcome`](../api/Outcome.md): - 'rolled-back': it ran, then was undone (reason 'timeout', 'enlisted-failed' or 'internal-error').
- [`Session.capture`](../api/Session.capture.md): [`idle()`](../api/Session.idle.md) waits for that transaction to settle: when it is your own and its `work` waits on you, finish or abort it first, or it rolls back with reason 'timeout' after its `timeoutMs`.
- [`Session.idle`](../api/Session.idle.md): An open transaction counts as open: [`idle()`](../api/Session.idle.md) waits for it to settle, so an app whose own transaction's `work` waits on that app (a dialog, a click) finishes or aborts that transaction before it awaits [`idle()`](../api/Session.idle.md), or the transaction rolls back with reason 'timeout' after its `timeoutMs` without progress and its staged change is lost.

The set is open: handle a code you don't know (`'other'`).
