Carries the detail of a request that came back without a response, but only when
Options.Builder.advancedRequestBehavior() is enabled. It wraps a
RequestFailureMessage and exposes a specific
RequestFailureReason plus the connection
status and last protocol error captured at the moment the request failed, so the actual cause (timeout
vs. reconnect vs. permissions vs. no-responders) can be told apart. The original caught exception is
chained as the cause (an
ExecutionException is unwrapped to its cause;
see
RequestFailureMessage.getCause()). Extends
IOException so existing catch blocks and
signatures are unaffected.
JetStream requests (publish, stream/consumer management) throw this in place of the generic
"Timeout or no response waiting for NATS JetStream server" IOException. Core
Connection.request(...) calls instead
return the RequestFailureMessage carrier directly (it is a Message), which callers can
inspect or wrap in this exception.