Retrying a stalled API request now waits longer on the retry than on the first attempt.
The first-byte stream timeout logic, which aborts an API request if no response headers arrive in time, now tracks per-request retry state via streamFirstByteArmedRequestIds. On a retry of the same request it computes an escalated (larger) retry window instead of reusing the original first-attempt window. The request timeout/retry budget calculator now returns an object with escalated, firstWindowMs, and retryWindowMs instead of a single number, and these values are surfaced in a new noResponse field on the shaped API error, reporting how long the client waited before giving up.