How do I return the response from an asynchronous call?

Eu tenho uma funçãofoo que faz um pedido de Ajax. Como posso retornar a resposta defoo?

Eu tentei retornar o valor dosuccess callback, bem como atribuir a resposta a uma variável local dentro da função e retorná-la, mas nenhuma dessas maneiras realmente retorna a resposta.

function foo() {
    var result;

    $.ajax({
        url: '...',
        success: function(response) {
            result = response;
            // return response; // <- I tried that one as well
        }
    });

    return result;
}

var result = foo(); // It always ends up being `undefined`.