Are you experiencing problems with the way it currently works? The current way is more suitable for streaming access of the response message. In the way suggested, you have to fully parse the response message in the positive case (i.e. no fault), which is too expensive. What I can imagine is something like:
protected boolean hasFault(WebServiceConnection connection, WebServiceMessage response) throws IOException
if (!((FaultAwareWebServiceConnection) connection).hasFault())
This way, we double check whether the connection fault really is a fault.
The hasFault() means (in HTTP terms) an error 500, in accordance with the WS-I spec. If a server sends a fault without a 500, it is not interoperable. And it's not just HTTP, JMS has a similar mechanism (a boolean property).