node.js - sqlite3 lê todos os registros na tabela e retorna

Estou tentando ler todos os registros em uma tabela sqlite3 e retorná-los via retorno de chamada. Mas parece que, apesar de usar serializar, essas chamadas ainda são ASYNC. Aqui está o meu código:

var readRecordsFromMediaTable = function(callback){

    var db = new sqlite3.Database(file, sqlite3.OPEN_READWRITE | sqlite3.OPEN_CREATE);

    var allRecords = [];

    db.serialize(function() {

        db.each("SELECT * FROM MediaTable", function(err, row) {

            myLib.generateLog(levelDebug, util.inspect(row));
            allRecords.push(row);

        }

        callback(allRecords);
        db.close();

    });

}

Quando o retorno de chamada é acionado, o array imprime '[]'.

Existe outra chamada que eu possa fazer (em vez de db.each) que me dará todas as linhas de uma só vez. Não preciso fazer iterações em cada linha aqui.

Se não houver, como leio todos os registros e só depois ligo o retorno de chamada com resultados?

questionAnswers(5)

yourAnswerToTheQuestion