# `SignalOption.signal`

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

Property of [`SignalOption`](SignalOption.md) · inherited by [`WriteOptions`](WriteOptions.md), [`TransactionOptions`](TransactionOptions.md), [`SceneModelOptions`](SceneModelOptions.md), [`PartWriteOptions`](PartWriteOptions.md), [`StageWriteOptions`](StageWriteOptions.md), [`CameraMoveOptions`](CameraMoveOptions.md), [`AttachOptions`](AttachOptions.md), [`PlayOptions`](PlayOptions.md) · stable · since 2.0.0

```ts
signal?: AbortSignal;
```

Cancels this call; the member's JSDoc says what an abort does. A write: before the commit
point it rolls back and rejects AbortError; after it, no effect, except that a running camera
move stops where the last frame drew it ([`CameraMoveOptions`](CameraMoveOptions.md)). Through a `tx` the commit
point is the transaction's: aborting a write still loading rejects AbortError and stages
nothing (catch it: unobserved, it rolls the transaction back, spec section 6.1, O6);
aborting one already staged unstages it, its paths keeping the latest other write
to them as after a failed savepoint (O7), and its Promise stays resolved 'staged'.
A registration (`on`,
[`beforeCommit`](Session.beforeCommit.md)): aborting removes it and nothing rejects. A wait ([`idle`](Session.idle.md), [`capture`](Session.capture.md)): aborting
rejects AbortError and nothing rolls back.
A creator (`collection` for a new name, [`materials.create`](Materials.create.md), `on`, [`onFrame`](Session.onFrame.md), [`beforeCommit`](Session.beforeCommit.md),
`follow`, [`input.drag`](Input.drag.md), [`labs.lightLinking`](Labs.lightLinking.md)) given a signal already aborted returns at once,
already ended: a [`Collection`](Collection.md) or [`Material`](Material.md) reading `disposed: true` that holds no content and
no live name, or a registration that never runs and whose disposer does nothing. It records no
Problem for the abort and throws only what it would throw anyway, as the DOM's `addEventListener` with an
aborted signal adds nothing (spec section 6.5).

**Default:** undefined

## Generic-API test (spec 3.1)

| Rule | Result |
| --- | --- |
| 1. Neutral name | pass: `signal` names no product |
| 2. A precedent | not recorded: no ledger row (coverage.json) names this member or its owner |
| 3. Two apps, or labs | pass: 20 apps (fleet cross-check: app-04c2774145, app-37356bf09f, app-4762caacdc, app-4f16d2f6da, app-4fd23bc869, app-822bb9d6aa, app-8675b3225c, app-b362a81c85 and 12 more) |
| 4. The cheaper fix first | not recorded per member (Appendix B decides it per need) |
