diff --git a/src/RESTController.ts b/src/RESTController.ts index 8185d65af..4e66140d5 100644 --- a/src/RESTController.ts +++ b/src/RESTController.ts @@ -334,7 +334,7 @@ const RESTController = { if (response && response.responseText) { try { const errorJSON = JSON.parse(response.responseText); - error = new ParseError(errorJSON.code, errorJSON.error); + error = new ParseError(errorJSON.code, errorJSON.error || errorJSON.message); } catch (_) { // If we fail to parse the error text, that's okay. error = new ParseError( diff --git a/src/__tests__/RESTController-test.js b/src/__tests__/RESTController-test.js index 5f9d3671b..155d56389 100644 --- a/src/__tests__/RESTController-test.js +++ b/src/__tests__/RESTController-test.js @@ -175,6 +175,25 @@ describe('RESTController', () => { }); }); + it('handles request errors with message', done => { + RESTController._setXHR( + mockXHR([ + { + status: 400, + response: { + code: 1, + message: 'Internal server error.', + }, + }, + ]) + ); + RESTController.request('GET', 'classes/MyObject', {}, {}).then(null, error => { + expect(error.code).toBe(1); + expect(error.message).toBe('Internal server error.'); + done(); + }); + }); + it('handles invalid responses', done => { const XHR = function () {}; XHR.prototype = {