diff --git a/src/together/abstract/api_requestor.py b/src/together/abstract/api_requestor.py index 3227fb6..e8eaf58 100644 --- a/src/together/abstract/api_requestor.py +++ b/src/together/abstract/api_requestor.py @@ -685,7 +685,7 @@ async def binary_stream_generator() -> ( except (aiohttp.ServerTimeoutError, asyncio.TimeoutError) as e: raise error.Timeout("Request timed out") from e except aiohttp.ClientError as e: - utils.log_warn("Error reading API response") + raise error.APIConnectionError("Error reading API response") from e if content_type in ["application/octet-stream", "audio/wav", "audio/mpeg"]: # Binary content - keep as bytes diff --git a/tests/unit/test_async_response_read_error.py b/tests/unit/test_async_response_read_error.py new file mode 100644 index 0000000..eb23bdc --- /dev/null +++ b/tests/unit/test_async_response_read_error.py @@ -0,0 +1,21 @@ +from unittest.mock import AsyncMock, MagicMock + +import aiohttp +import pytest + +from together import error +from together.abstract.api_requestor import APIRequestor +from together.types import TogetherClient + + +@pytest.mark.asyncio +async def test_async_read_connection_error_raises_api_connection_error(): + requestor = APIRequestor(client=TogetherClient(api_key="fake_api_key")) + + response = MagicMock() + response.headers = {"Content-Type": "application/json"} + response.status = 200 + response.read = AsyncMock(side_effect=aiohttp.ClientConnectionError("reset")) + + with pytest.raises(error.APIConnectionError): + await requestor._interpret_async_response(response, stream=False)