title: callback being called twice when my unit test fails
body: <p>I can't figure out why my save callback is being called twice in my mocha test when the callback fails.  It doesn't call the save twice, it only fires the callback for the save again but with the 'should' error when my 2nd unit test fails.  If I take out the failing 'should' assertion <code>should.exist err</code> from the second test it seems to work fine and doesn't trigger the save index callback twice.</p>
  
  <pre><code>class User
  
    constructor : (@name, @email, @pwd) -&gt;
    save : (callback) -&gt;
      unless this.validate()
        throw new Error('invalid data')
      else
        user = 
          name  : @name
          email : @email
          pwd   : @pwd
  
        node = db.createNode user
  
        node.save (err) -&gt;
          unless err        
            user.id = node.id;
            node.index 'User', 'name', user.name.toLowerCase(), (err2) -&gt;
              #why is this being fired twice when an assert in the callback fail?
              console.log '----------- triggering the save callback'
              callback err2, user
  
          else
            callback err
  </code></pre>
  
  <p>the mocha test</p>
  
  <pre><code>describe "User", -&gt;
      it "should be able to save", (done) -&gt;
          user = new User("quark", "quark@ds9.com", "profit")
          user.save (err, result) -&gt;
              should.exist result
              done err
  
      #this second unit test should fail since the duplicate checking is not yet implemented
      it "should not allow duplicates to be saved", (done) -&gt;
          user = new User("quark", "quark@ds9.com", "profit")
          user.save (err, result) -&gt;
              console.log err
              should.exist err #this triggers the user.save callback to be fired twice
              done null
  </code></pre>
  
  <p>And the test results</p>
  
  <pre><code>  User
      ◦ should be able to save: ----------- triggering the save callback
      ✓ should be able to save (43ms)
      ◦ should not allow duplicates to be saved: ----------- triggering the save callback
  undefined
  ----------- triggering the save callback
  { name: 'AssertionError',
    message: 'expected undefined to exist',
    actual: undefined,
    expected: undefined,
    operator: undefined }
      ✓ should not allow duplicates to be saved 
  
  
    ✔ 2 tests complete (69ms)
  </code></pre>