Stone.js API
    Preparing search index...

    What a channel answers.

    It answers, and never throws, for everything it can foresee: a missing address, a provider refusing, a rate limit. A channel that throws is treated as retryable, because a throw is an adapter bug and burying a whole channel's traffic the day a provider client changes its errors would be worse than one retry too many.

    interface DeliveryOutcome {
        channel?: string;
        id?: string;
        reason?: string;
        retryable?: boolean;
        status: DeliveryStatus;
    }
    Index
    channel?: string

    Which channel answered. Filled in by the notifier.

    id?: string

    The provider's own id for the message, when it gives one.

    reason?: string

    Why, in words a person reading a log can act on.

    retryable?: boolean

    Whether trying again could work.

    The distinction a channel owes its caller: a provider being down is retryable, an address that does not exist never will be, and retrying it forever is how a queue fills up with work that cannot succeed.

    Whether it went out.