       record._expectedBeforeAsyncMethodWithAsyncCallback = undefined
       record._expectedAfterAsyncMethodWithAsyncCallback = true
       record._expectedAfterAsyncMethodWithAsyncCallback2 = true
-      record.asyncMethodWithAsyncCallback =>
+      record._expectedAsyncMethodWithAsyncCallback = false
+      record.asyncMethodWithAsyncCallback (error) =>
+        assert.equal error.message, 'true'
         assert.equal record._beforeAsyncMethodWithAsyncCallback, undefined
-        assert.equal record._asyncMethodWithAsyncCallback, true
+        assert.equal record._asyncMethodWithAsyncCallback, false
         assert.equal record._afterAsyncMethodWithAsyncCallback, true
         # never reaches this one.
         assert.equal record._afterAsyncMethodWithAsyncCallback2, undefined
         done()
+
+    test '* if async block calls callback with anything but false/undefined/null it will halt', (done) ->
+      record._expectedBeforeAsyncMethodWithAsyncCallback = false # but still will execute
+      record._expectedAfterAsyncMethodWithAsyncCallback = false # but will be undefined because it halts
+      record._expectedAsyncMethodWithAsyncCallback = 'error!'
+      record.asyncMethodWithAsyncCallback (error) =>
+        assert.equal error.message, 'error!'
+        assert.equal record._beforeAsyncMethodWithAsyncCallback, false
+        assert.equal record._asyncMethodWithAsyncCallback, 'error!'
+        assert.equal record._afterAsyncMethodWithAsyncCallback, undefined
+        done()

    test 'everything should execute if no errors', (done) ->
      record._expectedBeforeAsyncMethodWithAsyncCallback = undefined
      record._expectedAfterAsyncMethodWithAsyncCallback = false
      record.asyncMethodWithAsyncCallback =>
        assert.equal record._beforeAsyncMethodWithAsyncCallback, undefined
        assert.equal record._asyncMethodWithAsyncCallback, true
        assert.equal record._afterAsyncMethodWithAsyncCallback, false
        done()


    asyncMethodWithAsyncCallback: (methodDone) ->
      block = (blockDone) ->
        process.nextTick =>
          blockDone(@_asyncMethodWithAsyncCallback = @_expectedAsyncMethodWithAsyncCallback)

      @runCallbacks 'asyncMethodWithAsyncCallback', block, methodDone

