ES6 generators lets us to hide the asynchronicity as an implementation detail, as result our code flow is much simple and readable.