transport.ts documents reconnectDelayMs as 'Fixed for now; production should layer exponential backoff + jitter' (src/client/transport.ts:56-58). A DO outage causes every client to retry on a fixed 250ms interval indefinitely (connect-failure path at transport.ts:185-195 re-arms forever), creating a thundering herd.
Proposal: either (a) built-in capped exponential backoff with jitter, resetting on successful open, or (b) a reconnectDelay: (attempt: number) => number | null option (null = stop), keeping the current fixed delay as default. Should also expose attempt count / last close code so apps can distinguish auth closes (4xxx) from transient drops.
Workaround today: sleep inside a custom open factory (the transport awaits it).
transport.ts documents reconnectDelayMs as 'Fixed for now; production should layer exponential backoff + jitter' (src/client/transport.ts:56-58). A DO outage causes every client to retry on a fixed 250ms interval indefinitely (connect-failure path at transport.ts:185-195 re-arms forever), creating a thundering herd.
Proposal: either (a) built-in capped exponential backoff with jitter, resetting on successful open, or (b) a
reconnectDelay: (attempt: number) => number | nulloption (null = stop), keeping the current fixed delay as default. Should also expose attempt count / last close code so apps can distinguish auth closes (4xxx) from transient drops.Workaround today: sleep inside a custom
openfactory (the transport awaits it).