From 0f7c0ca48e186f33143fd9282a1869be67a5e82a Mon Sep 17 00:00:00 2001 From: Stephen Sawchuk Date: Thu, 30 Jul 2015 10:35:26 -0400 Subject: [PATCH] core: use is-stream-ended --- lib/common/stream-router.js | 19 ++++++------------- package.json | 1 + 2 files changed, 7 insertions(+), 13 deletions(-) diff --git a/lib/common/stream-router.js b/lib/common/stream-router.js index f4d2708fbde..23be9d736b4 100644 --- a/lib/common/stream-router.js +++ b/lib/common/stream-router.js @@ -21,6 +21,7 @@ 'use strict'; var concat = require('concat-stream'); +var isStreamEnded = require('is-stream-ended'); var streamEvents = require('stream-events'); var through = require('through2'); @@ -181,17 +182,9 @@ streamRouter.runAsStream_ = function(parsedArguments, originalMethod) { var stream = streamEvents(through.obj()); - // Results from the API are split apart for the user. If 50 results are - // returned, we emit 50 data events. While the user is consuming these, they - // might choose to end the stream early by calling ".end()". We keep track of - // this state to prevent pushing more results to the stream, ending it again, - // or making unnecessary API calls. - var streamEnded = false; - var _end = stream.end; - stream.end = function() { - streamEnded = true; - _end.apply(this, arguments); - }; + function shouldPushResult() { + return resultsToSend !== 0 && !isStreamEnded(stream); + } function onResultSet(err, results, nextQuery) { if (err) { @@ -201,12 +194,12 @@ streamRouter.runAsStream_ = function(parsedArguments, originalMethod) { } var result; - while ((result = results.shift()) && resultsToSend !== 0 && !streamEnded) { + while ((result = results.shift()) && shouldPushResult()) { stream.push(result); resultsToSend--; } - if (streamEnded) { + if (isStreamEnded(stream)) { return; } diff --git a/package.json b/package.json index 25a0c518b64..87b24d0e0f2 100644 --- a/package.json +++ b/package.json @@ -56,6 +56,7 @@ "duplexify": "^3.2.0", "extend": "^2.0.0", "google-auth-library": "^0.9.4", + "is-stream-ended": "^0.1.0", "mime-types": "^2.0.8", "node-uuid": "^1.4.2", "once": "^1.3.1",