diff --git a/lib/common/grpc-service.js b/lib/common/grpc-service.js index 9c9de954361..f26b845c75c 100644 --- a/lib/common/grpc-service.js +++ b/lib/common/grpc-service.js @@ -20,7 +20,6 @@ 'use strict'; -var extend = require('extend'); var googleProtoFiles = require('google-proto-files'); var grpc = require('grpc'); var is = require('is'); @@ -456,9 +455,13 @@ GrpcService.createDeadline_ = function(timeout) { * @return {error|null} */ GrpcService.getError_ = function(err) { - if (GRPC_ERROR_CODE_TO_HTTP[err.code]) { - return extend(true, {}, err, GRPC_ERROR_CODE_TO_HTTP[err.code]); + if (err && GRPC_ERROR_CODE_TO_HTTP[err.code]) { + var defaultErrorDetails = GRPC_ERROR_CODE_TO_HTTP[err.code]; + err.code = defaultErrorDetails.code; + err.message = err.message || defaultErrorDetails.message; + return err; } + return null; }; diff --git a/test/common/grpc-service.js b/test/common/grpc-service.js index 6f30a3563a0..e2230db9559 100644 --- a/test/common/grpc-service.js +++ b/test/common/grpc-service.js @@ -1133,7 +1133,19 @@ describe('GrpcService', function() { }); }); - it('should return null for unknown errors', function() { + it('should use the message from the error', function() { + var errorMessage = 'This is an error message.'; + + var err = { + code: 1, + message: errorMessage + }; + + var error = GrpcService.getError_(err); + assert.strictEqual(error.message, errorMessage); + }); + + it('should return the original object for unknown errors', function() { var error = GrpcService.getError_({ code: 9999 }); assert.strictEqual(error, null);