title: Detect when data has passed through a stream chain without finishing the chain
body: <p>I am piping a number of files through a cipher stream and then writing the result all to the same file. I can accomplish this by doing <code>src_file_1.pipe(cipher, {end: false}).pipe(dest_file, {end: false});</code>, <code>src_file_2.pipe(cipher, {end: false}).pipe(dest_file, {end: false});</code>, etc, but I am unable to close out the dest_file stream because it is impossible to know when cipher is done writing. If I do not specify <code>{end: false}</code> in the chain, then it is impossible to re-use cipher (reusing the same cipher is a requirement of my application).</p>
  
  <p>Thus <code>src_file1.on('end', function()...)</code> is insufficient, since when this runs, data might still not have run through cipher, and <code>dest_file.on('finish, function()...)</code> is impossible to use since it will never fire unless I don't specify <code>{end: false}</code>.... So what I basically need is a way of telling if a chain of streams is done processing its current load, without ending anything in the chain.</p>