Retornando o valor do retorno de chamada dentro do Meteor.method

Estou correndo para algo que não entendo com o Meteor. Eu tenho esse método, que leva uma consulta, envia para amazon e, em seguida, no retorno de chamada dessa função tento retornar os resultados.

Meteor.methods({
    'search': function(query) {
        var bookInfo;
        if (Meteor.isServer) {
            amazon.execute('ItemSearch', {
                'SearchIndex': 'Books',
                'Keywords': query,
                'ResponseGroup': 'ItemAttributes'
            }, function(results) {
                bookInfo = results;
                console.log(bookInfo);
                return bookInfo;
            });
        }
    }
});

Mas quando eu coloquei o seguinte no console no meu navegador (chrome):

Meteor.call('search', 'harry potter', function(error, response) {
    console.log('response:', response);
});

Eu entendi o seguinte:

undefined
response: undefined          VM13464:3

Acho que entendo que o primeiro indefinido vem do método não retornar nada no cliente, mas o retorno de chamada parece não funcionar.

O amazon.execute (...) está definitivamente retornando algo, já que o console.log logo acima do retorno registra as informações que estou procurando.

Alguma idéia do que está errado e como posso consertar?

questionAnswers(4)

yourAnswerToTheQuestion