IOError vs Message error

Currently, there is no way to differentiate between a socket IOError and a Message of type error. Both call dispatchError with the same condition, message, type, and code. However, they should be handled completely different. One means the socket has failed, while the other could simply mean that the resource is offline.

Any current workarounds?