diff --git a/src/node/interop/interop_client.js b/src/node/interop/interop_client.js
index 8059c1a003ebe2dc34bc688d924fc47074cd23a9..402843162e021660f0b8b72e68d9a1eb4f0c6c40 100644
--- a/src/node/interop/interop_client.js
+++ b/src/node/interop/interop_client.js
@@ -271,7 +271,7 @@ function cancelAfterFirstResponse(client, done) {
  * @param {function} done Callback to call when the test is completed. Included
  *     primarily for use with mocha
  */
-function authTest(expected_user, client, scope, done) {
+function authTest(expected_user, scope, client, done) {
   (new GoogleAuth()).getApplicationDefault(function(err, credential) {
     assert.ifError(err);
     if (credential.createScopedRequired() && scope) {
diff --git a/src/node/src/client.js b/src/node/src/client.js
index 707a2d99d8db561665221909a3a944c70e943832..46d476b9f4f9c439cffebb988f6b8e6d4748b2e2 100644
--- a/src/node/src/client.js
+++ b/src/node/src/client.js
@@ -223,7 +223,7 @@ function makeUnaryRequestFunction(method, serialize, deserialize) {
     emitter.cancel = function cancel() {
       call.cancel();
     };
-    this.updateMetadata(metadata, function(error, metadata) {
+    this.updateMetadata(this.auth_uri, metadata, function(error, metadata) {
       if (error) {
         call.cancel();
         callback(error);
@@ -289,7 +289,7 @@ function makeClientStreamRequestFunction(method, serialize, deserialize) {
       metadata = {};
     }
     var stream = new ClientWritableStream(call, serialize);
-    this.updateMetadata(metadata, function(error, metadata) {
+    this.updateMetadata(this.auth_uri, metadata, function(error, metadata) {
       if (error) {
         call.cancel();
         callback(error);
@@ -360,7 +360,7 @@ function makeServerStreamRequestFunction(method, serialize, deserialize) {
       metadata = {};
     }
     var stream = new ClientReadableStream(call, deserialize);
-    this.updateMetadata(metadata, function(error, metadata) {
+    this.updateMetadata(this.auth_uri, metadata, function(error, metadata) {
       if (error) {
         call.cancel();
         stream.emit('error', error);
@@ -427,7 +427,7 @@ function makeBidiStreamRequestFunction(method, serialize, deserialize) {
       metadata = {};
     }
     var stream = new ClientDuplexStream(call, serialize, deserialize);
-    this.updateMetadata(metadata, function(error, metadata) {
+    this.updateMetadata(this.auth_uri, metadata, function(error, metadata) {
       if (error) {
         call.cancel();
         stream.emit('error', error);
@@ -503,10 +503,11 @@ function makeClientConstructor(methods, serviceName) {
         callback(null, metadata);
       };
     }
+
     this.server_address = address.replace(/\/$/, '');
     this.channel = new grpc.Channel(address, options);
-    this.updateMetadata = _.partial(updateMetadata,
-                                    this.server_address + '/' + serviceName);
+    this.auth_uri = this.server_address + '/' + serviceName;
+    this.updateMetadata = updateMetadata;
   }
 
   _.each(methods, function(attrs, name) {