TransportRetryExhaustedException
Both transport attempts for one chat-completions POST failed — the original try and the single retry {@see LlmService} allows for a transient wire failure (connection refused or reset, timeout, DNS). Its message already carries the `"$provider API Error: ..."` prefix callers expect AND names that two attempts were made, so the catch blocks that re-wrap other throwables must let this one through untouched — wrapping it again would stutter the prefix and bury the attempt count. An HTTP response of any status never becomes this exception: a 4xx/5xx is the provider speaking, not the wire failing, and surfaces exactly as before.
TransportRetryExhaustedException::__construct()
public function __construct(string $message = '', int $code = 0, ?Throwable $previous = null, ?string $endpoint = null):Parameters
| Name | Type | Description |
|---|---|---|
| $message | string | the provider-prefixed message naming both attempts |
| $code | int | unused, kept for the base signature |
| $previous | (\Throwable | null) | the second attempt's failure |
| $endpoint | (string | null) | the endpoint neither attempt reached, shown without credentials ({@see ProviderEndpoint::shown()}) — null from a caller that did not say |