Reject the deferred in the event of an error.

#### What's this PR do?
Adds promise rejection support
#### Where should the reviewer start?
N/A
#### How should this be manually tested?
Add a `return APIError(500, 'error here')` at the top of ItemsAPI in api/handlers.py.
#### Any background context you want to provide?
#### What are the relevant tickets?
#### Screenshots (if appropriate)
#### What gif best describes this PR or how it makes you feel?
![](http://s.mlkshk-cdn.com/r/11EJN.gif)
#### Definition of Done:
- [ ] Is there appropriate test coverage? (e.g. ChefSpec, Mocha/Chai, Python, etc.)
- [X] Does this PR require a Selenium test? (e.g. Browser-specific bugs or complicated UI bugs)
- [X] Does this PR require a regression test? All fixes require a regression test.
- [X] Does this PR require a blog post? If so, ensure marketing has signed off on content.
- [X] Does the [knowledge base](https://sprint.ly/docs) need to be updated?
- [X] Does this add new dependencies? If so, does Chef, M4, or PIP requirements need to be updated?
- [X] Will this feature require a new piece of infrastructure be implemented?
- [X] Are any new services fully automated in Chef?
- [X] Are there ChefSpec tests for the new Chef recipes/cookbooks?
- [X] Does this PR require new Mixpanel or GA events?
- [X] Is there appropriate logging included?