- r.addEventListener('load', () => resolve(r));
- r.addEventListener('error', () => reject(r));
+ (window as any).cancelTokens[config.url] = () => {
+ resolve(r);
+ r.abort();
+ }
+
+ if (config.onUploadProgress) {
+ r.upload.addEventListener('progress', config.onUploadProgress);
+ }
+
+ // 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);
+ });