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