# `HoloTransactionClosedError`

> 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.

Class · `import { HoloTransactionClosedError } from '@holostep-configurators/runtime-client';` · stable · since 2.0.0 · section 3. Errors

A write through a `tx` (or a handle obtained from it) after that transaction closed. Thrown at
the call; nothing changes; the problem 'write-after-close' is recorded (after [`destroy()`](Session.destroy.md),
[`closedBy`](HoloTransactionClosedError.closedBy.md) is 'destroyed' and nothing is recorded; after `el` leaves the document, [`closedBy`](HoloTransactionClosedError.closedBy.md) is
'aborted' and nothing is recorded (spec section 6.5); nor through a [`beforeCommit`](Session.beforeCommit.md) hook's
`commit.tx` whose commit ended before its commit point). Reads keep working until
[`destroy()`](Session.destroy.md), then throw DOMException 'InvalidStateError'.

## Members

| Member | Kind | Summary |
| --- | --- | --- |
| <a id="constructor"></a>[`constructor`](HoloTransactionClosedError.constructor.md) | constructor | As the runtime builds it. |
| <a id="op"></a>[`op`](HoloTransactionClosedError.op.md) | property | The closed transaction's id (`tx.op`). |
| <a id="closedby"></a>[`closedBy`](HoloTransactionClosedError.closedBy.md) | property | How it closed. |

## Declaration

```ts
export declare class HoloTransactionClosedError extends Error {
  constructor(op: OpId, closedBy: HoloTransactionClosedError['closedBy']);
  readonly op: OpId;
  readonly closedBy: 'committed' | 'rolled-back' | 'superseded' | 'aborted' | 'threw' | 'destroyed' | 'other';
}
```

## Generic-API test (spec 3.1)

| Rule | Result |
| --- | --- |
| 1. Neutral name | pass: `HoloTransactionClosedError` names no product |
| 2. A precedent | not recorded: no ledger row (coverage.json) names this member or its owner |
| 3. Two apps, or labs | not recorded: no ledger row names this member or its owner |
| 4. The cheaper fix first | not recorded per member (Appendix B decides it per need) |
