Node.js / Async - Как избежать ада обратного вызова с async?

Я новичок в веб-разработке для Node.Js и JavaScript. Я вижу, что обратные вызовы внутри обратных вызовов могут быть проблемой, и есть модули, чтобы этого избежать. Один из этих модулей асинхронный,https://github.com/caolan/async

Я прочитал документацию, но трудно начать и понять, как это сделать.

Например, у меня есть эта функция "check_aut_user", как я могу преобразовать этот код, используя async?

function check_auth_user(username, password, done) {

    var client = new pg.Client("pg://user:[email protected]/database");
    client.connect(function(err) {
        // If not get the connection
        if(err) { return console.error('could not connect to postgres', err); }

        // Query the user table
        client.query('select * from "user" where username = $1 and password = $2', [username, password], function(err, result) {
            if(err) { return console.error('error running query', err); }

            if (result.rowCount > 0) {
                var res = result.rows[0];
                console.log(res);

                passport.serializeUser(function(res, done) {
                    //console.log("serializer: " + res);
                    done(null, res);
                });

                passport.deserializeUser(function(user, done) {
                    //console.log("deserializer: " + user['password']);
                    done(null, res);
                }); 

                return done(null, res);
            } else {
                return done(null, false);
            }               
        });     
    });
}

С уважением,

Ответы на вопрос(3)

Ваш ответ на вопрос