Patch Changes
- 8600d25: Add fast-loop detection with automatic cache recovery to ShapeStream. When the client detects rapid requests stuck at the same offset (indicating stale client-side caches or proxy/CDN misconfiguration), it clears the affected shape's cached state and resets the stream to fetch from scratch. If the loop persists, exponential backoff is applied before eventually throwing a diagnostic error.
- 1e1123b: Fixed
isControlMessagetype guard crashing on messages without acontrolheader (e.g.EventMessages or malformed responses). The function previously used a negation check (!isChangeMessage()) which misclassified any non-change message as aControlMessage, causingTypeError: Cannot read property 'control' of undefinedinShape.process_fn. Now uses a positive check for'control' in message.headers, consistent with howisChangeMessagechecks for'key' in message. - e172d4b: Increase default retry backoff parameters to reduce retry storms when a proxy fails, aligning with industry-standard values (gRPC, AWS).
initialDelay100ms → 1s,multiplier1.3 → 2,maxDelay60s → 32s. Reaches cap in 5 retries instead of ~25.