text: var assert = require('assert'),
      vows = require('vows'),
      request = require('request'),
      union = require('../');
  
  function stream_callback(cb) {
    return function () {
      var stream   = new union.ResponseStream();
  
      stream.once("pipe", function (req) {
        return cb ? cb(null,req) : undefined;
      });
  
      return stream;
    };
  }
  
  vows.describe('union/after').addBatch({
    'When using `union`': {
      'a union server with after middleware': {
        topic: function () {
          var self = this;
  
          union.createServer({
            after: [ stream_callback(), stream_callback(self.callback) ]
          }).listen(9000, function () {
            request.get('http://localhost:9000');
          });
        },
        'should preserve the request until the last call': function (req) {
          assert.equal(req.req.httpVersion, '1.1');
          assert.equal(req.req.url, '/');
          assert.equal(req.req.method, 'GET');
        }
      }
    }
  }).export(module);