- r.addEventListener('load', () => resolve(r));
- r.addEventListener('error', () => reject(r));
+ // This event gets triggered on *any* server response
+ r.addEventListener('load', () => {
+ if (r.status >= 400) {
+ return reject(r);
+ } else {
+ return resolve(r);
+ }
+ });
+
+ // This event gets triggered on network errors
+ r.addEventListener('error', () => {
+ return reject(r);
+ });
+
+ r.upload.addEventListener('error', () => {
+ return reject(r);
+ });