Best practice penggunaan async module pada nodeJs

nodeJS adalah salah satu programing language yang lebih banyak menggunakan proses asynchronous (tanpa antrian). Biasanya, Sebagian coder yang mecoba migrasi dari php ke nodejs akan mengalami kesulitan (tantangan) dalam menghandle proses async dan callback hell.

Namun ada beberapa modul npm untuk membantu kita dalam memanfaatkan performa async dari node js, diantaranya async, Q promise, bluebird dkk.

Async utilitie adalah sebuah modul async yang cukup popular dengan 17K github star.

https://github.com/caolan/async

berikut simple best practice penggunaan modul async yang paling sering digunakan pada real case application.
async.series, parallel, waterfall dan async.each

Pada auth flow
async.series
fungsi A — user input validasi 
fungsi B — check is valid user
fungsi C — session handle
fungsi akhir => {
if(error) handle error;
redirect ke dashboard
}

async.series akan menjalankan blok fungsi BERURUTAN, dan akan mengumpulkan semua return di akhir fungsi

pada logging flow
async.paraller
fungsi A: handle & save visitor IP address
fungsi B: handle last login session
fungsi C: handle cookies
fungsi akhir => {
show view
}

async.paraller akan menjalankan semua blok fungsi secara BERSAMAAN dan tidak saling menunggu,

async.waterfall
fungsi A: proses pertama, menghasilkan return_A
fungsi B: proses kedua dengan argumen return_A, menghasilkan return_B
fungsi akhir => {
return_B di proses disini
}

waterfall artinya bertingkat, artinya fungsi pertama akan memberikan umpan ke fungsi kedua, dan seterusnya.

intinya, agar tidak gagal paham dalam penggunaan node js, salah satunya adalah dengan menguasai async control flow, karena hampir semua nodejs aplikasi, pasti selalu dipenuhi dengan async proses. 
Karena dengan modul async, maka
- bisa memodifikasi proses antrian 
- flow code yang mudah di baca dan ditelusuri

npm install — save async
atau https://github.com/caolan/async