Maneira mais simples de esperar algumas tarefas assíncronas completas, em Javascript?

Eu quero descartar algumas coleções mongodb, mas isso é uma tarefa assíncrona. O código será:

<code>var mongoose = require('mongoose');

mongoose.connect('mongo://localhost/xxx');

var conn = mongoose.connection;

['aaa','bbb','ccc'].forEach(function(name){
    conn.collection(name).drop(function(err) {
        console.log('dropped');
    });
});
console.log('all dropped');
</code>

O console exibe:

<code>all dropped
dropped
dropped
dropped
</code>

Qual é a maneira mais simples de se certificarall dropped será impresso depois que todas as coleções forem descartadas? Qualquer terceiro pode ser usado para simplificar o código.

questionAnswers(8)

yourAnswerToTheQuestion