Sua função externa precisa fornecer um retorno de chamada que pode ser executado assim que a chamada do mysql for concluída. Algo nesse sentido:
function authenticate(user, pass, callback) {
mysql_client.query("...", function (err, results, fields) {
if (err) {
callback("Error communicating ...");
} else if (results.length ...) {
callback("Error comparing authentication...");
}
callback()
});
});
Exemplo de uso:
authenticate('jim', '123456', function (err) {
if (err) {
alert(err);
} else {
alert('Welcome');
}
});