'use strict'; module.exports = function parseJSON(res, fn){ res.text = ''; res.setEncoding('utf8'); res.on('data', chunk => { res.text += chunk; }); res.on('end', () => { try { var body = res.text && JSON.parse(res.text); } catch (e) { var err = e; // issue #675: return the raw response if the response parsing fails err.rawResponse = res.text || null; // issue #876: return the http status code if the response parsing fails err.statusCode = res.statusCode; } finally { fn(err, body); } }); };