A few changes to error handling

1) The error callback returns the error as the first parameter
2) The error returned is an actual error
3) The complete callback return the error as the first response mimicking the underlying request framework