Skip to content

Commit 89802a1

Browse files
authored
Merge pull request #1 from bduffany/master
Fix undefined error messages
2 parents b4b70d7 + f64ca56 commit 89802a1

1 file changed

Lines changed: 31 additions & 19 deletions

File tree

src/http.js

Lines changed: 31 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -48,28 +48,26 @@ export default class Http {
4848
return new Promise((resolve, reject) => {
4949
const request = new window.XMLHttpRequest();
5050
request.open(method, url);
51-
request.onload = function() {
51+
request.onload = function () {
52+
let response;
5253
try {
53-
const response = JSON.parse(request.response);
54-
55-
if (request.status.toString() === HTTP_STATUS.OK) {
56-
resolve(response);
57-
} else {
58-
reject(
59-
new Error({
60-
body: response,
61-
status: request.status,
62-
}),
63-
);
64-
}
54+
response = JSON.parse(request.response);
6555
} catch (e) {
66-
reject(
67-
new Error({
68-
body: request.responseText,
69-
status: request.status,
70-
}),
71-
);
56+
// JSON failed to parse. Create a placeholder response.
57+
response = {
58+
error: {
59+
message: 'Failed to parse response JSON.',
60+
}
61+
};
62+
reject(convertXhrErrorToRequestPromiseError(request, response));
63+
return;
64+
}
65+
if (request.status.toString() !== HTTP_STATUS.OK) {
66+
reject(convertXhrErrorToRequestPromiseError(request, response));
67+
return;
7268
}
69+
70+
resolve(response);
7371
};
7472
request.setRequestHeader('Content-Type', 'application/json');
7573
request.setRequestHeader('Accept', 'application/json');
@@ -126,3 +124,17 @@ export default class Http {
126124
});
127125
}
128126
}
127+
128+
/**
129+
* Converts the given XHR error to an error that looks like one that would
130+
* be returned by the request-promise API.
131+
* @param {XMLHttpRequest} request
132+
* @param {any} response
133+
*/
134+
function convertXhrErrorToRequestPromiseError(request, response) {
135+
return {
136+
name: 'StatusCodeError',
137+
error: response,
138+
statusCode: request.status,
139+
};
140+
}

0 commit comments

Comments
 (0)