Allow for more specific callback return objects

If a callback returns an object responding to :code and :message, this
data is sent along the wire to allow for more specific error codes