RPCClient._send_and_handle_reply() raises an RPCError based on the contents of the error attribute in the reply message. However the contents of the error reply are not preserved.
Change RPCClient and RPCError so that RPCError contains the error, message and data attributes of the error reply.
Also allow RPCError to correctly propagates through a chain of services.
RPCClient._send_and_handle_reply() raises an RPCError based on the contents of the error attribute in the reply message. However the contents of the error reply are not preserved.
Change RPCClient and RPCError so that RPCError contains the error, message and data attributes of the error reply.
Also allow RPCError to correctly propagates through a chain of services.