Currently, when a CustomCallingConvention fails to convert a request or a response, the only options for generating an exception is to produce an IOException. This is the only (checked) exception thrown by the convertRequestImpl(...) and convertResultImpl(...) methods.
However, I have seen several situations where the cause for the failure is not at all related to an I/O error. In such cases I would rather just throw a specific exception instead, like a ConvertRequestException and a ConvertResultException, respectively.
I will attach a proposed implementation.