title: Property value lost on async waterfall
body: <p>I am trying to mock an express response object in order to perform some unit tests. My mocked response objects looks like this so far:</p>
  
  <pre><code>module.exports.responseHelper = {
      response: "",
      send : function(val){
          this.response = val;
      }
  }
  </code></pre>
  
  <p>My problem is that if I pass this object to a method like this:</p>
  
  <pre><code>var async = require('async');
  
  exports.sample = function (req, res) {
      async.waterfall([
          function(callback){
              callback(null, res);
          },
          function(res, callback){
              callback(null, res);
          },
          function(res, callback){
              callback(null, res);
          }
      ], function (err, res) {
          console.log("res before: " + res.response);
          res.send("something4");
          console.log("res after: " + res.response);
      });
  };
  </code></pre>
  
  <p>Calling it like this:</p>
  
  <pre><code>var route = require("../routes/testing");
  var response = require("./requestHelper").responseHelper;
  
  var req = {
      params: {
          someID: 1
      }
  }
  route.sample(req, response);
  console.log("final res: " + response.response);
  </code></pre>
  
  <p>The response.response value is always just "" (empty string)</p>
  
  <p>Ideally I would not like to change the route implementation but I want to be able to get whatever value is passed to send at the end of the waterfall.</p>