O assert.throws do nó está completamente quebrado?

Dado este código:

var assert = require('assert');

function boom(){
    throw new Error('BOOM');
}

assert.throws( boom(), Error );

Recebo essa saída, com o nó 0.4.9:

node.js:134
        throw e; // process.nextTick error, or 'error' event on first tick
        ^
Error: BOOM
    at boom ([EDITED]/assert.throws.test.js:4:9)
    at Object.<anonymous> ([EDITED]/assert.throws.test.js:7:17)
    at Module._compile (module.js:402:26)
    at Object..js (module.js:408:10)
    at Module.load (module.js:334:31)
    at Function._load (module.js:293:12)
    at Array.<anonymous> (module.js:421:10)
    at EventEmitter._tickCallback (node.js:126:26)

Isto, para mim, implica que ocorreu uma exceção não capturada, em oposição a uma exceção capturada relatada. Examinando os documentos, percebo que os exemplos se parecem mais com isso:

var assert = require('assert');

function boom(){
    throw new Error('BOOM');
}

assert.throws( boom, Error );

Mas como testar se ele lança uma exceção, dada uma determinada entrada? Por exemplo

var assert = require('assert');

function boom(blowup){
    if(blowup)
        throw new Error('BOOM');
}

assert.throws( boom, Error );

Isso falhará. O que estou fazendo de errado ou que segredo todos sabem além de mim?

questionAnswers(4)

yourAnswerToTheQuestion