diff --git a/src/node/src/client.js b/src/node/src/client.js
index c02c44730e511ba8a6bfab06e600225cb13a1597..c65dd7365037a00c2f001132788824bf70196890 100644
--- a/src/node/src/client.js
+++ b/src/node/src/client.js
@@ -648,8 +648,8 @@ exports.makeClientConstructor = function(methods, serviceName) {
     var deserialize = attrs.responseDeserialize;
     Client.prototype[name] = requester_makers[method_type](
         attrs.path, serialize, deserialize);
-    Client.prototype[name].serialize = serialize;
-    Client.prototype[name].deserialize = deserialize;
+    // Associate all provided attributes with the method
+    _.assign(Client.prototype[name], attrs);
   });
 
   return Client;
diff --git a/src/node/src/common.js b/src/node/src/common.js
index e5217608ecdb5350b2c3c401d8c0aa19187463b9..7705a275fcee23169cc5f5c875d08202e9046813 100644
--- a/src/node/src/common.js
+++ b/src/node/src/common.js
@@ -146,6 +146,8 @@ exports.getProtobufServiceAttrs = function getProtobufServiceAttrs(service,
       path: prefix + method.name,
       requestStream: method.requestStream,
       responseStream: method.responseStream,
+      requestType: method.resolvedRequestType,
+      responseType: method.resolvedResponseType,
       requestSerialize: serializeCls(method.resolvedRequestType.build()),
       requestDeserialize: deserializeCls(method.resolvedRequestType.build(),
                                      binaryAsBase64, longsAsStrings),