footprintjs - v11.2.0
    Preparing search index...

    Interface FlowAttemptEvent

    Event passed to FlowRecorder.onAttempt — one attempt, at its end (10.1): a stage's own under its retry policy, a timeoutMs or a run deadline (record.kind === 'stage'), or — during the stage — a call it made ('call', scope.$call) or an outside attempt it reported ('observed', P2). stageName / stageId / traversalContext are the stage's in every case; filter on record.kind to count one kind.

    WHY this event exists: onStageRetry says "attempt N failed, retrying" and nothing else — not how long a try took, not why the series stopped, and nothing at all when retryOn declined. Every attempt is an AttemptRecord instead, whatever its outcome, with the decision that followed it in the shape decide() records — the same records the stage's execution-tree node keeps (StageSnapshot.attempts).

    Fires once per attempt, before onStageRetry (when the attempt is retried) and before onError / onStageExecuted (for the last). The record is frozen and survives structuredClone; structuredError is the served error with raw, as on FlowStageRetryEvent — except for an observed attempt, whose error the library never threw (raw is undefined).

    interface FlowAttemptEvent {
        channel?: "flow";
        record: AttemptRecord;
        stageId: string;
        stageName: string;
        structuredError?: StructuredErrorInfo;
        traversalContext?: TraversalContext;
    }
    Index
    channel?: "flow"

    Explicit channel discriminant — see FlowErrorEvent.channel.

    The attempt: timing, outcome, category, decision, and the served error without raw.

    stageId: string

    Stable stage identifier from the builder (matches spec node id).

    stageName: string
    structuredError?: StructuredErrorInfo

    The attempt's served error with raw — absent for a success or a pause.

    traversalContext?: TraversalContext