one update:
in your fix
you throw in ReactorNettyClientRequest::convertException - after falling thru - the IOException this way:
return new IOException(ex.getMessage(), cause);
In case of eg. a io.netty.handler.timeout.ReadTimeoutException both are null - the message plus the cause.
So you loose the connex to ex and that it was a timeout that caused the exception.
Consumers like org.springframework.web.client.DefaultRestClient.DefaultRequestBodyUriSpec#createResourceAccessException
don't have this information at hand and throw a ResourceAccessException with "null" message.
Originally posted by @helmut-hackl-dynatrace in https://github.com/spring-projects/spring-framework/issues/32952#issuecomment-2180520891