use throwable in transport layer
catch throwable when processing messages in the transport layer, to report back failures even under errors