diff --git a/lib/common/util.js b/lib/common/util.js index e4f5384cf0c..bb4e80e26ab 100644 --- a/lib/common/util.js +++ b/lib/common/util.js @@ -149,7 +149,11 @@ function handleResp(err, resp, body, callback) { return; } if (resp && (resp.statusCode < 200 || resp.statusCode > 299)) { - callback(new Error('error during request, statusCode: ' + resp.statusCode)); + var error = 'error during request, statusCode: ' + resp.statusCode; + if (body) { + error += ', body: ' + body; + } + callback(new Error(error)); return; } callback(null, body, resp); diff --git a/lib/datastore/transaction.js b/lib/datastore/transaction.js index ee2f9ac49f1..2738a92f8aa 100644 --- a/lib/datastore/transaction.js +++ b/lib/datastore/transaction.js @@ -446,7 +446,13 @@ Transaction.prototype.makeReq = function(method, req, respType, callback) { buffer = Buffer.concat([buffer, chunk]); }); resp.on('end', function() { - callback(null, respType.decode(buffer)); + util.handleResp(null, resp, buffer.toString(), function(err) { + if (err) { + callback(err); + return; + } + callback(null, respType.decode(buffer)); + }); }); }); remoteStream.on('error', callback);