From 879bf7bb90ad9f2c0c88c95f65cf95c17ebb7e3c Mon Sep 17 00:00:00 2001
From: Justin Beckwith <justin.beckwith@gmail.com>
Date: Mon, 22 Jul 2019 22:31:14 -0700
Subject: [PATCH] fix(deps): drop dependency on through2 (#400)

---
 packages/google-cloud-node/package.json       |  3 +-
 packages/google-cloud-node/src/helpers.js     | 34 +++++++++++--------
 packages/google-cloud-node/test/gapic-v1.js   | 19 ++++++-----
 .../google-cloud-node/test/gapic-v1p1beta1.js | 19 ++++++-----
 4 files changed, 42 insertions(+), 33 deletions(-)

diff --git a/packages/google-cloud-node/package.json b/packages/google-cloud-node/package.json
index a7c8a94f5ee5..5a006631337f 100644
--- a/packages/google-cloud-node/package.json
+++ b/packages/google-cloud-node/package.json
@@ -45,8 +45,7 @@
     "google-gax": "^1.0.0",
     "protobufjs": "^6.8.6",
     "pumpify": "^1.5.1",
-    "stream-events": "^1.0.4",
-    "through2": "^3.0.0"
+    "stream-events": "^1.0.4"
   },
   "devDependencies": {
     "codecov": "^3.0.2",
diff --git a/packages/google-cloud-node/src/helpers.js b/packages/google-cloud-node/src/helpers.js
index 1b12c9b7f972..00ec9324b684 100644
--- a/packages/google-cloud-node/src/helpers.js
+++ b/packages/google-cloud-node/src/helpers.js
@@ -19,7 +19,7 @@
 const common = require('@google-cloud/common');
 const pumpify = require('pumpify');
 const streamEvents = require('stream-events');
-const through = require('through2');
+const {PassThrough} = require('stream');
 
 /*!
  * Return a dictionary-like object with helpers to augment the Speech
@@ -94,22 +94,26 @@ module.exports = () => {
         // Format the user's input.
         // This entails that the user sends raw audio; it is wrapped in
         // the appropriate request structure.
-        through.obj((audioContent, _, next) => {
-          if (audioContent !== undefined) {
-            next(null, {audioContent});
-            return;
-          }
-
-          next();
+        new PassThrough({
+          objectMode: true,
+          transform: (audioContent, _, next) => {
+            if (audioContent !== undefined) {
+              next(null, {audioContent});
+              return;
+            }
+            next();
+          },
         }),
         requestStream,
-        through.obj((response, enc, next) => {
-          if (response.error) {
-            next(new common.util.ApiError(response.error));
-            return;
-          }
-
-          next(null, response);
+        new PassThrough({
+          objectMode: true,
+          transform: (response, enc, next) => {
+            if (response.error) {
+              next(new common.util.ApiError(response.error));
+              return;
+            }
+            next(null, response);
+          },
         }),
       ]);
     });
diff --git a/packages/google-cloud-node/test/gapic-v1.js b/packages/google-cloud-node/test/gapic-v1.js
index d0e195177939..554b69e50ea7 100644
--- a/packages/google-cloud-node/test/gapic-v1.js
+++ b/packages/google-cloud-node/test/gapic-v1.js
@@ -15,7 +15,7 @@
 'use strict';
 
 const assert = require('assert');
-const through2 = require('through2');
+const {PassThrough} = require('stream');
 
 const speechModule = require('../src');
 
@@ -311,13 +311,16 @@ function mockSimpleGrpcMethod(expectedRequest, response, error) {
 
 function mockBidiStreamingGrpcMethod(expectedRequest, response, error) {
   return () => {
-    const mockStream = through2.obj((chunk, enc, callback) => {
-      assert.deepStrictEqual(chunk, expectedRequest);
-      if (error) {
-        callback(error);
-      } else {
-        callback(null, response);
-      }
+    const mockStream = new PassThrough({
+      objectMode: true,
+      transform: (chunk, enc, callback) => {
+        assert.deepStrictEqual(chunk, expectedRequest);
+        if (error) {
+          callback(error);
+        } else {
+          callback(null, response);
+        }
+      },
     });
     return mockStream;
   };
diff --git a/packages/google-cloud-node/test/gapic-v1p1beta1.js b/packages/google-cloud-node/test/gapic-v1p1beta1.js
index fbccb29ac147..5ad1eef9842a 100644
--- a/packages/google-cloud-node/test/gapic-v1p1beta1.js
+++ b/packages/google-cloud-node/test/gapic-v1p1beta1.js
@@ -15,7 +15,7 @@
 'use strict';
 
 const assert = require('assert');
-const through2 = require('through2');
+const {PassThrough} = require('stream');
 
 const speechModule = require('../src');
 
@@ -311,13 +311,16 @@ function mockSimpleGrpcMethod(expectedRequest, response, error) {
 
 function mockBidiStreamingGrpcMethod(expectedRequest, response, error) {
   return () => {
-    const mockStream = through2.obj((chunk, enc, callback) => {
-      assert.deepStrictEqual(chunk, expectedRequest);
-      if (error) {
-        callback(error);
-      } else {
-        callback(null, response);
-      }
+    const mockStream = new PassThrough({
+      objectMode: true,
+      transform: (chunk, enc, callback) => {
+        assert.deepStrictEqual(chunk, expectedRequest);
+        if (error) {
+          callback(error);
+        } else {
+          callback(null, response);
+        }
+      },
     });
     return mockStream;
   };