Return err object within the callback

The actual err object, instead of a string, should be returned in the callback if an error occurs. This allows user apps to properly handle and log error conditions when received and to be able to see details of the error that occurred.

Feel free to code it differently because I don't fully understand why it currently uses .call on this. Is it done that way because of the requeue?