title: How does piping a stream back to itself work with Trumpet?
body: <p>Learning node.js.  Trumpet works by piping a stream back to itself, apparently, so the processed data can then be output.  This makes no sense to me, since it seems to be like connecting both ends of a stream to itself.  How does trumpet distinguish between the pre and post processed data?  ie, why doesn't <code>loud.pipe(...).pipe(loud)</code> result in some form of infinite loop of processing?</p>
  
  <pre><code>var trumpet = require('trumpet');
  var through = require('through');
  var tr = trumpet();
  
  var loud = tr.select('.loud').createStream();
  loud.pipe(through(function (buf) {
      this.queue(buf.toString().toUpperCase());
  })).pipe(loud);
  
  process.stdin.pipe(tr).pipe(process.stdout);
  </code></pre>