title: mongoose middleware issues
body: <p>the scenarios are as follows</p>
  
  <p>scenario #1</p>
  
  <pre><code>someSchema.pre('save', function(next){
    asyncFunction(function(){
      this.sub.value = 'something'
      next()
    })
  })
  </code></pre>
  
  <p>This fails because this changes context and now represents asyncFunction, and so I can't modify the incoming data within a function. It comes up with an error that this.sub is not defined</p>
  
  <p>scenario #2, based on the information from hooks-js</p>
  
  <pre><code>some.Schema.pre('save', function(next){
    asyncFunction(function(){
      next('something')
    });
  });
  some.Schema.pre('save', function(next, value){
    this.sub.value=value
    next()
  })
  </code></pre>
  
  <p>This works, in so far as that it modifies the values, and the mongodb side is fine, however it just hangs, and never continues after saving the document. </p>
  
  <p>Am I doing something wrong? is there a better way of doing this? Or is this a bug</p>
  
  <p>scenario #3 originally failed but now seems to work</p>
  
  <pre><code>someSchema.pre('save', function(next){
    x = this
    asyncFunction(function(){
      x.sub.value = 'something'
      next()
    })
  })
  </code></pre>
  
  <p>That said, I am still curious as to why scenario #2 didn't work.</p>