Optionalmessage: stringHuman-readable reason; the user-facing payload of the condition
Readonly__type__Runtime brand (Symbol.for — survives duplicated module instances)
Static OptionalprepareOptional override for formatting stack traces
OptionalstackStaticstackStaticcaptureCreate .stack property on a target object
OptionalconstructorOpt: FunctionStaticfromNominal constructor for a new GeneralExpectedError from any thrown object. Use
this instead of instanceof to recognize instances created by a DIFFERENT copy
of this module (duplicated bundles, linked packages).
Any thrown object
a new GeneralExpectedError with the original message, or a default message if the original was not a string
StaticisNominal type guard by the runtime brand. Use this instead of instanceof:
the check is based on Symbol.for, so it recognizes instances created by a
DIFFERENT copy of this module (duplicated bundles, linked packages), as well
as any subclass carrying the inherited brand.
Any thrown object
true when the object carries the GeneralExpectedError brand
EXPECTED application-level condition — the Java-style
Exceptionhalf of the error/exception split: "this failure is a known, anticipated business outcome, not a malfunction".Purpose: classification marker, not routing
The framework does NOT pattern-match this class anywhere — it adds no special handling to gates, checks, or any other channel. It exists so APPLICATION code can split its own catch blocks the way Java splits
ExceptionfromError:Relation to the order-error triad
OrderRejectedError, OrderDeletedError and OrderTransientError are CHANNEL-specific verdicts consumed by the framework's order machinery. GeneralExpectedError is channel-agnostic and framework-invisible: throwing it from a gate or check is treated like any other non-typed throw (the "transient" verdict). Use the triad inside broker adapters; use GeneralExpectedError in your own application layers.
Nuances
__type__ === Symbol.for("GeneralExpectedError")brand via the static guard — never byinstanceof, so it survives duplicated module instances across bundles. Subclass it freely for domain-specific expected conditions: the brand is inherited, so the single guard catches the whole family.messageis the user-facing payload — unlike the order triad, where the message is purely informational, here it typically carries the text shown to the human who triggered the operation.Example