aboutsummaryrefslogtreecommitdiff
path: root/ext/bg/js/request.js
diff options
context:
space:
mode:
authorAlex Yatskov <alex@foosoft.net>2020-01-26 11:29:30 -0800
committerAlex Yatskov <alex@foosoft.net>2020-01-26 11:29:30 -0800
commit0c5b9b1fa1599cbf769d96cdebc226310f9dd8bc (patch)
treee734e2c3005078dbc248b541d357a934baa8a116 /ext/bg/js/request.js
parent2a12036ca305044291f1f4105d6a8d249848b210 (diff)
parent0cf1cf3aa094585bd6db8db2c1f229ba0ea37b6e (diff)
Merge branch 'master' into testing
Diffstat (limited to 'ext/bg/js/request.js')
-rw-r--r--ext/bg/js/request.js22
1 files changed, 13 insertions, 9 deletions
diff --git a/ext/bg/js/request.js b/ext/bg/js/request.js
index b584c9a9..02eed6fb 100644
--- a/ext/bg/js/request.js
+++ b/ext/bg/js/request.js
@@ -17,10 +17,10 @@
*/
-function requestJson(url, action, params) {
+function requestText(url, action, params) {
return new Promise((resolve, reject) => {
const xhr = new XMLHttpRequest();
- xhr.overrideMimeType('application/json');
+ xhr.overrideMimeType('text/plain');
xhr.addEventListener('load', () => resolve(xhr.responseText));
xhr.addEventListener('error', () => reject(new Error('Failed to connect')));
xhr.open(action, url);
@@ -29,12 +29,16 @@ function requestJson(url, action, params) {
} else {
xhr.send();
}
- }).then((responseText) => {
- try {
- return JSON.parse(responseText);
- }
- catch (e) {
- return Promise.reject(new Error('Invalid response'));
- }
});
}
+
+async function requestJson(url, action, params) {
+ const responseText = await requestText(url, action, params);
+ try {
+ return JSON.parse(responseText);
+ } catch (e) {
+ const error = new Error(`Invalid response (${e.message || e})`);
+ error.data = {url, action, params, responseText};
+ throw error;
+ }
+}