Qual é o caminho certo para fazer uma consulta síncrona do MongoDB no Node.js?

Estou usando o driver Node.JS para o MongoDB e gostaria de executar uma consulta síncrona, como:

function getAThing()
{
    var db = new mongo.Db("mydatabase", server, {});

    db.open(function(err, db)
    {
        db.authenticate("myuser", "mypassword", function(err, success)
        {
            if (success)
            {
                db.collection("Things", function(err, collection)
                {
                    collection.findOne({ name : "bob"}, function(err, thing)
                    {                           
                        return thing;
                    });
                });
            }
        });
    });
}

O problema é que db.open é uma chamada asicronosa (não bloqueia), então o getAThing retorna "indefinido" e eu quero que ele retorne os resultados da consulta. Tenho certeza que poderia algum tipo de mecanismo de bloqueio, mas gostaria de saber o caminho certo para fazer algo assim.

questionAnswers(3)

yourAnswerToTheQuestion