diff --git a/src/replit_river/client_session.py b/src/replit_river/client_session.py index ef535ee3..ed498847 100644 --- a/src/replit_river/client_session.py +++ b/src/replit_river/client_session.py @@ -252,7 +252,11 @@ async def send_rpc( except Exception as e: raise RiverException("error_deserializer", str(e)) from e raise exception_from_message(error.code)( - error.code, error.message, service_name, procedure_name + error.code, + error.message, + service_name, + procedure_name, + underlying_error=error, ) return response_deserializer(response["payload"]) except RiverException as e: @@ -338,7 +342,11 @@ async def send_upload( except Exception as e: raise RiverException("error_deserializer", str(e)) from e raise exception_from_message(error.code)( - error.code, error.message, service_name, procedure_name + error.code, + error.message, + service_name, + procedure_name, + underlying_error=error, ) return response_deserializer(response["payload"]) diff --git a/src/replit_river/error_schema.py b/src/replit_river/error_schema.py index 94a6789a..d6a316c1 100644 --- a/src/replit_river/error_schema.py +++ b/src/replit_river/error_schema.py @@ -51,12 +51,18 @@ class RiverServiceException(RiverException): """Exception raised by river as a result of a fault in the service running river.""" def __init__( - self, code: str, message: str, service: str | None, procedure: str | None + self, + code: str, + message: str, + service: str | None, + procedure: str | None, + underlying_error: RiverError | None = None, ) -> None: self.code = code self.message = message self.service = service self.procedure = procedure + self.underlying_error = underlying_error service = service or "N/A" procedure = procedure or "N/A" msg = ( diff --git a/src/replit_river/v2/session.py b/src/replit_river/v2/session.py index 9d8ce129..f7bfe4ed 100644 --- a/src/replit_river/v2/session.py +++ b/src/replit_river/v2/session.py @@ -790,7 +790,11 @@ async def send_rpc[R, A]( except Exception as e: raise RiverException("error_deserializer", str(e)) from e raise exception_from_message(error.code)( - error.code, error.message, service_name, procedure_name + error.code, + error.message, + service_name, + procedure_name, + underlying_error=error, ) return response_deserializer(result["payload"]) @@ -899,7 +903,11 @@ async def send_upload[I, R, A]( except Exception as e: raise RiverException("error_deserializer", str(e)) from e raise exception_from_message(error.code)( - error.code, error.message, service_name, procedure_name + error.code, + error.message, + service_name, + procedure_name, + underlying_error=error, ) return response_deserializer(result["payload"])