When using a buf PromiseClient to interact with services, errors arising from or arriving via the transport are understood as "Internal" errors and are concealed from the caller.
This prevents use of error messages and contents for signalling things like rejection reason, and prevents distinguishing "normal" errors from a broken application.
This requires either:
stepping back from the Transport concept to handle failures directly at the Client level
investigating ways to provoke meaningful Client behavior from the Transport, such as by mocking analogous http codes
or, revising plans on things like transaction approval denials.
When using a buf PromiseClient to interact with services, errors arising from or arriving via the transport are understood as "Internal" errors and are concealed from the caller.
This prevents use of error messages and contents for signalling things like rejection reason, and prevents distinguishing "normal" errors from a broken application.
This requires either: