Blob Blame History Raw
commit 4145b1c18762a46af04be129aec48eed30754956
Author: Tom Hughes <tom@compton.nu>
Date:   Thu Dec 31 12:18:02 2015 +0000

    Wait until the next tick to pause the stream
    
    Registering handlers on a stream with `on` causes resume to be
    called, but only on the next tick.
    
    This leads to a race condition where the pause can happen before
    that delayed resume, which then resumes the stream earlier than we
    were expecting.

diff --git a/test/readdirp-stream.js b/test/readdirp-stream.js
index c43d132..e45bab5 100644
--- a/test/readdirp-stream.js
+++ b/test/readdirp-stream.js
@@ -252,16 +252,19 @@ test('\napi separately', function (t) {
         t.equals(data, processedData, 'emits the buffered data');
         t.ok(resumed, 'emits data only after it was resumed');
       })
-      .pause()
     
-    api.processEntry(processedData);
-    api.handleError(nonfatalError);
-    api.handleFatalError(fatalError);
+    process.nextTick(function() {
+      api.stream.pause();
+
+      api.processEntry(processedData);
+      api.handleError(nonfatalError);
+      api.handleFatalError(fatalError);
   
-    setTimeout(function () {
-      resumed = true;
-      api.stream.resume();
-    }, 1)
+      setTimeout(function () {
+        resumed = true;
+        api.stream.resume();
+      }, 1)
+    })
   })
 
   t.test('\n# when a stream is paused it stops walking the fs', function (t) {