Como encerrar uma chamada assíncrona para se comportar de forma síncron

Atualmente, é assim que eu executo uma consulta usando o node-mysql

client.query( sql, function( error, result ) {
  console.dir( result );
});

Eu gostaria de fazer isso de forma síncrona, algo assim

var result = client.querySync( sql );
console.dir( result );

Entendo por que o bloqueio no nó é ruim, mas estou (quase) crescido o suficiente para saber quando está tudo bem e quando não está. Pretendo apenas fazer chamadas síncronas no estágio de inicialização, fora de qualquer loop de event

Alguém sabe como posso conseguir isso, por favor?

Editar..

Algo ao longo das linhas de ...

client.querySync = function( sql )
{
    var called = false;
    var result;

    while ( typeof result == 'undefined' ) {
        if ( ! called ) {
            called = true;
            this.query( sql, function( error, _result ) {
                result = { error: error, result: _result };
            });
        };
    }

    return result;
};

questionAnswers(5)

yourAnswerToTheQuestion