diff --git a/src/RtsClient.js b/src/RtsClient.js index 0067d0ae10..fe1f0538ca 100644 --- a/src/RtsClient.js +++ b/src/RtsClient.js @@ -1,5 +1,25 @@ const q = require('q'); -const request = q.nfbind(require('browser-request')); +const request = (opts) => { + const expectingJSONOnSucess = opts.json; + if (opts.json) { + opts.json = false; + } + return q.nfbind(require('browser-request'))(opts).then((args) => { + const response = args[0]; + let body = args[1]; + + // Do not expect JSON on error status code, throw error instead + if (response.statusCode !== 200) { + throw new Error(body); + } + + if (expectingJSONOnSucess) { + body = JSON.parse(body); + } + + return [response, body]; + }); +}; export default class RtsClient { constructor(url) {