-export function fetchJSON(path, resolve, reject) {
- // NB: IE11 doesn't support JSON as a responseType
- var req = new XMLHttpRequest();
- req.open('GET', path);
-
- req.onload = function () {
- if (req.status === 200) {
- try {
- var resObj = JSON.parse(req.responseText);
- } catch (err) {
- reject(err);
- return;
+export function fetchJSON(path) {
+ return new Promise((resolve, reject) => {
+ // NB: IE11 doesn't support JSON as a responseType
+ const req = new XMLHttpRequest();
+ req.open('GET', path);
+
+ req.onload = () => {
+ if (req.status === 200) {
+ let resObj;
+ try {
+ resObj = JSON.parse(req.responseText);
+ } catch (err) {
+ reject(err);
+ }
+ resolve(resObj);
+ } else {
+ reject(new Error("XHR got non-200 status while trying to load '" + path + "': " + req.status));