Overriding is dangerous IMO (promises may have an `abort` method in the future).
Can return a wrapper object? Something like:
```js
var apiRequest = {
  'then': promise.then,
  'abort': function abort() {
    reject();
    if (httpRequest.abort) {
      httpRequest.abort();
    }
  }
}
return apiRequest;
```

Note that when aborting the request we **must** `reject` the promise in order to cancel it's success callback.