From 67a12d3c4dc45f3e4682a3dfb1be2e227ec804d9 Mon Sep 17 00:00:00 2001 From: zadam Date: Thu, 19 Oct 2023 00:13:11 +0200 Subject: [PATCH] improve sync error logging --- src/services/request.js | 31 ++++++++++++++++++++----------- 1 file changed, 20 insertions(+), 11 deletions(-) diff --git a/src/services/request.js b/src/services/request.js index b67b807f3..0af02b7ea 100644 --- a/src/services/request.js +++ b/src/services/request.js @@ -58,10 +58,6 @@ function exec(opts) { request.on('error', err => reject(generateError(opts, err))); request.on('response', response => { - if (![200, 201, 204].includes(response.statusCode)) { - reject(generateError(opts, `${response.statusCode} ${response.statusMessage}`)); - } - if (opts.cookieJar && response.headers['set-cookie']) { opts.cookieJar.header = response.headers['set-cookie']; } @@ -71,15 +67,28 @@ function exec(opts) { response.on('data', chunk => responseStr += chunk); response.on('end', () => { - try { - const jsonObj = responseStr.trim() ? JSON.parse(responseStr) : null; + if ([200, 201, 204].includes(response.statusCode)) { + try { + const jsonObj = responseStr.trim() ? JSON.parse(responseStr) : null; - resolve(jsonObj); - } - catch (e) { - log.error(`Failed to deserialize sync response: ${responseStr}`); + resolve(jsonObj); + } catch (e) { + log.error(`Failed to deserialize sync response: ${responseStr}`); - reject(generateError(opts, e.message)); + reject(generateError(opts, e.message)); + } + } else { + let errorMessage; + + try { + const jsonObj = JSON.parse(responseStr); + + errorMessage = jsonObj?.message || ''; + } catch (e) { + errorMessage = responseStr.substr(0, Math.min(responseStr.length, 100)); + } + + reject(generateError(opts, `${response.statusCode} ${response.statusMessage} ${errorMessage}`)); } }); });