diff --git a/src/services/request.js b/src/services/request.js index 0334c09865..610e44f515 100644 --- a/src/services/request.js +++ b/src/services/request.js @@ -63,10 +63,15 @@ function exec(opts) { } let responseStr = ''; + let chunks = []; - response.on('data', chunk => responseStr += chunk); + response.on('data', chunk => chunks.push(chunk)); response.on('end', () => { + // use Buffer instead of string concatenation to avoid implicit decoding for each chunk + // decode the entire data chunks explicitly as utf-8 + responseStr = Buffer.concat(chunks).toString('utf-8') + if ([200, 201, 204].includes(response.statusCode)) { try { const jsonObj = responseStr.trim() ? JSON.parse(responseStr) : null;