From 267c1630645301cbcdcedd334a8cdc5c0aee8121 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Tue, 8 Apr 2025 22:30:26 +0000 Subject: [PATCH] fix: raise connection error for errors that result from HTTP transports --- lib/openai/internal/transport/base_client.rb | 2 +- lib/openai/internal/transport/pooled_net_requester.rb | 8 +++++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/lib/openai/internal/transport/base_client.rb b/lib/openai/internal/transport/base_client.rb index b2e526d5..0489a1c8 100644 --- a/lib/openai/internal/transport/base_client.rb +++ b/lib/openai/internal/transport/base_client.rb @@ -380,7 +380,7 @@ def initialize( in (400..) | OpenAI::Errors::APIConnectionError self.class.reap_connection!(status, stream: stream) - delay = retry_delay(response, retry_count: retry_count) + delay = retry_delay(response || {}, retry_count: retry_count) sleep(delay) send_request( diff --git a/lib/openai/internal/transport/pooled_net_requester.rb b/lib/openai/internal/transport/pooled_net_requester.rb index b6303758..7bb8ef19 100644 --- a/lib/openai/internal/transport/pooled_net_requester.rb +++ b/lib/openai/internal/transport/pooled_net_requester.rb @@ -123,9 +123,12 @@ def build_request(request, &blk) def execute(request) url, deadline = request.fetch_values(:url, :deadline) + req = nil eof = false finished = false closing = nil + + # rubocop:disable Metrics/BlockLength enum = Enumerator.new do |y| with_pool(url, deadline: deadline) do |conn| next if finished @@ -155,8 +158,11 @@ def execute(request) end end rescue Timeout::Error - raise OpenAI::Errors::APITimeoutError + raise OpenAI::Errors::APITimeoutError.new(url: url, request: req) + rescue StandardError + raise OpenAI::Errors::APIConnectionError.new(url: url, request: req) end + # rubocop:enable Metrics/BlockLength conn, _, response = enum.next body = OpenAI::Internal::Util.fused_enum(enum, external: true) do