Simple VowJS Test Callback Hangs - I can't see why?

I'm really sorry to paste code like this. I'm completely dumbfounded here - can anybody tell me why this hangs? Paste the following in test.js then run node test.js (with vows@0.8.1) and it'll hang.

Can anybody tell me why?

var vows = require('vows');
var assert = require('assert');

function foo(cb) {
    console.log("Calling...");
    cb("test");
    console.log("Called.");
}

vows.describe('Make Vow hang').addBatch({
    'return a value': {
        topic: function () {
            return "bar";
        },

        'this is': {
            'executed fine': function (topic) {
                assert.equal(topic, "bar");
            }
        }
    },
    'call a function': {
        topic: function () {
            foo(this.callback);
        },

        'this is': {
            'never executed': function (err, topic) {
                console.log('This wont get logged.');
                assert.equal(false, true);
            }
        }
    }
}).run();

The output shows one successful test (the final period) then it hangs:

Calling...
Called.
·

It didn't hang on my vows@0.8.1 but it got callback not fired error.

Vows follows Node.js async pattern, callback(err, arg0, ..., argN). That means the first argument passed in the callback function is expected to be an Error object.

If you modify your function foo by removing "test" from the callback, it will work.

function foo(cb) {
    console.log("Calling...");
    cb();
    console.log("Called.");
}

The result of Vows after the modification:

Calling...
Called.
This wont get logged.
✗·

    call a function this is
      ✗ never executed
        » expected true,
        got      false (==)
  ✗ Broken » 1 honored ∙ 1 broken (0.011s)