Você está tentando forçar um paradigma síncrono. Simplesmente não funciona. node.js é de encadeamento único, na maioria das vezes -- quando o io é concluído, o contexto de execução é gerado. A sinalização é gerenciada com um retorno de chamada. O que isso significa é que você tem retornos de chamada aninhados, funções nomeadas ou uma biblioteca de controle de fluxo para tornar as coisas mais bonitas.
https://github.com/caolan/async#parallel
async.parallel([
function(cb){
users.find({}, cb);
},
function(cb){
articles.find({}, cb);
}
], function(results){
// results contains both users and articles
});