Map a retryable HTTP status (429 / 5xx) to an IOException so withRetry retries it; leave 4xx permanent.