plandex-ai/plandex · error
error making request: %w
Error message
error making request: %w
What it means
createChatCompletionStreamExtended: httpClient.Do fails issuing the streaming chat-completion request to the provider. Network-level failure — DNS, TLS, timeout, connection refused — before any response status is available.
Source
Thrown at app/server/model/client.go:363
req.Header.Set("Accept", "text/event-stream")
req.Header.Set("Cache-Control", "no-cache")
req.Header.Set("Connection", "keep-alive")
// some providers send api key in the body, some in the header
// some use other auth methods and so don't have a simple api key
if client.ApiKey != "" {
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 {View on GitHub (pinned to e2d772072e)
Solutions
- Check the wrapped error for DNS/TLS/timeout specifics
- Verify provider base URL and network egress
- Retry; the streaming-retry wrapper may handle transient failures
Defensive patterns
Strategy: retry
When it happens
Trigger: Thrown at app/server/model/client.go:363 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/6791ebd4843b6855.
Report an issue: GitHub.