Skip to content

Class: MutationOutcomeUnconfirmedError

@kortexya/reasoninglayer


@kortexya/reasoninglayer / MutationOutcomeUnconfirmedError

Defined in: src/errors.ts:471

A vocabulary mutation whose commit outcome is unknown (HTTP 503, code: "vocabulary_outcome_unconfirmed").

The request may or may not be stored. NEVER conclude that nothing was written. Either read VocabularyClient.getRequestOutcome with the operation and key recovery names, or repeat the identical request with the same key: a committed request then answers its stored outcome with replayed: true, and an uncommitted one runs.

A 503 vocabulary_not_committed is a different refusal (a plain VocabularyRefusedError): nothing was committed, and a repeat is safe.

try {
await client.vocabulary.activate(releaseId, request, { idempotencyKey });
} catch (e) {
if (e instanceof MutationOutcomeUnconfirmedError && e.recovery) {
const outcome = await client.vocabulary
.getRequestOutcome(e.recovery.operation, e.recovery.idempotencyKey)
.catch(() => undefined);
// committed: repeat with the same key to read the typed result
}
}

new MutationOutcomeUnconfirmedError(status, body, headers, refusal): MutationOutcomeUnconfirmedError

Defined in: src/errors.ts:477

number

unknown

Headers

VocabularyRefusal

MutationOutcomeUnconfirmedError

VocabularyRefusedError.constructor

readonly authority: VocabularyAuthorityCheck | undefined

Defined in: src/errors.ts:393

The authority check that failed, when the refusal is about authority.

VocabularyRefusedError.authority


readonly body: unknown

Defined in: src/errors.ts:55

Parsed response body.

VocabularyRefusedError.body


optional cause?: unknown

Defined in: node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.error.d.ts:26

VocabularyRefusedError.cause


readonly code: VocabularyRefusalCode

Defined in: src/errors.ts:383

The closed refusal code.

VocabularyRefusedError.code


readonly conflicts: readonly VocabularyRebaseConflict[]

Defined in: src/errors.ts:391

The rebase conflicts (rebase_conflict); empty otherwise.

VocabularyRefusedError.conflicts


readonly current: VocabularyCurrentState | undefined

Defined in: src/errors.ts:387

The state the request met (active release, candidate state, head revision), when reported.

VocabularyRefusedError.current


readonly errorCode: string | undefined

Defined in: src/errors.ts:53

Backend error code (from response body error field), if present.

VocabularyRefusedError.errorCode


readonly findings: readonly VocabularyFinding[]

Defined in: src/errors.ts:389

The findings behind the refusal; empty when it names none.

VocabularyRefusedError.findings


readonly headers: Headers

Defined in: src/errors.ts:57

Response headers.

VocabularyRefusedError.headers


message: string

Defined in: node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es5.d.ts:1077

VocabularyRefusedError.message


name: string = 'MutationOutcomeUnconfirmedError'

Defined in: src/errors.ts:472

VocabularyRefusedError.name


readonly plugin: VocabularyPluginFinding | undefined

Defined in: src/errors.ts:395

The plugin gate’s finding (vocabulary_plugin_unavailable).

VocabularyRefusedError.plugin


readonly recovery: VocabularyRecovery | undefined

Defined in: src/errors.ts:475

Where to read the committed outcome, when the engine knew the request identity.


readonly refusal: VocabularyRefusal

Defined in: src/errors.ts:385

The whole refusal body, read and typed.

VocabularyRefusedError.refusal


optional stack?: string

Defined in: node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es5.d.ts:1078

VocabularyRefusedError.stack


readonly status: number

Defined in: src/errors.ts:51

HTTP status code.

VocabularyRefusedError.status


static stackTraceLimit: number

Defined in: node_modules/.pnpm/@types+node@24.13.3/node_modules/@types/node/globals.d.ts:68

The Error.stackTraceLimit property specifies the number of stack frames collected by a stack trace (whether generated by new Error().stack or Error.captureStackTrace(obj)).

The default value is 10 but may be set to any valid JavaScript number. Changes will affect any stack trace captured after the value has been changed.

If set to a non-number value, or set to a negative number, stack traces will not capture any frames.

VocabularyRefusedError.stackTraceLimit

static captureStackTrace(targetObject, constructorOpt?): void

Defined in: node_modules/.pnpm/@types+node@24.13.3/node_modules/@types/node/globals.d.ts:52

Creates a .stack property on targetObject, which when accessed returns a string representing the location in the code at which Error.captureStackTrace() was called.

const myObject = {};
Error.captureStackTrace(myObject);
myObject.stack; // Similar to `new Error().stack`

The first line of the trace will be prefixed with ${myObject.name}: ${myObject.message}.

The optional constructorOpt argument accepts a function. If given, all frames above constructorOpt, including constructorOpt, will be omitted from the generated stack trace.

The constructorOpt argument is useful for hiding implementation details of error generation from the user. For instance:

function a() {
b();
}
function b() {
c();
}
function c() {
// Create an error without stack trace to avoid calculating the stack trace twice.
const { stackTraceLimit } = Error;
Error.stackTraceLimit = 0;
const error = new Error();
Error.stackTraceLimit = stackTraceLimit;
// Capture the stack trace above function b
Error.captureStackTrace(error, b); // Neither function c, nor b is included in the stack trace
throw error;
}
a();

object

Function

void

VocabularyRefusedError.captureStackTrace


static prepareStackTrace(err, stackTraces): any

Defined in: node_modules/.pnpm/@types+node@24.13.3/node_modules/@types/node/globals.d.ts:56

Error

CallSite[]

any

https://v8.dev/docs/stack-trace-api#customizing-stack-traces

VocabularyRefusedError.prepareStackTrace