plandex-ai/plandex · error
error reading error response: %w
Error message
error reading error response: %w
What it means
The provider returned an HTTP error status, and reading that error response body with io.ReadAll also failed. The original API error is lost because the body could not be drained (connection reset mid-body).
Source
Thrown at app/server/model/client.go:370
req.Header.Set("Authorization", "Bearer "+client.ApiKey)
}
if client.OpenAIOrgId != "" {
req.Header.Set("OpenAI-Organization", client.OpenAIOrgId)
}
addOpenRouterHeaders(req)
// Send the request
resp, err := httpClient.Do(req) //nolint:bodyclose // body is closed in stream.Close()
if err != nil {
return nil, fmt.Errorf("error making request: %w", err)
}
if resp.StatusCode < http.StatusOK || resp.StatusCode >= http.StatusBadRequest {
defer resp.Body.Close()
body, err := io.ReadAll(resp.Body)
if err != nil {
return nil, fmt.Errorf("error reading error response: %w", err)
}
return nil, &HTTPError{
StatusCode: resp.StatusCode,
Body: string(body),
Header: resp.Header.Clone(), // retain Retry-After etc.
}
}
// Log response headers
// log.Println("Response headers:")
// for key, values := range resp.Header {
// log.Printf("%s: %v\n", key, values)
// }
reader := &StreamReader[types.ExtendedChatCompletionStreamResponse]{
reader: bufio.NewReader(resp.Body),
response: resp,
emptyMessagesLimit: 30,View on GitHub (pinned to e2d772072e)
Solutions
- Retry the request to get a fresh response
- Check provider status/health if errors persist
- Log the status code alongside to diagnose the original API error
Defensive patterns
Strategy: retry
When it happens
Trigger: Thrown at app/server/model/client.go:370 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of plandex-ai/plandex@e2d772072e (2026-09-05).
Data as JSON: /api/errors/cf856126ce30dacd.
Report an issue: GitHub.