Adding the ability to intercept a command error event without sending a request

- Adds a CanceledResponse which is used to satisfy the underlying request
  event loop.
- Adds an event in the request's event loop to prevent any complete events
  from firing.
- Adds a way for a client to know about the error event and corresponding
  result without an actual response.