You should look at `fetch` which is the new specification for a promise based XHR wrapper.
Polyfill: https://github.com/github/fetch
To use Fetch in Firefox (38), you'll currently need to enable it — go to about:config, set dom.fetch.enabled to true, and restart the browser. To use Fetch in Chrome 41/Opera 28, you need to enable the "Experimental Web Platform Features" pref in chrome://flags.