Summary
At the beginning of this chapter, we said that Node.js programming can be tough because of its asynchronous nature, especially for people used to developing on other platforms. However, throughout this chapter we showed how asynchronous APIs can be bent to our will, starting with plain JavaScript, which provided us the foundation for the analysis of more sophisticated techniques. We then saw that the tools at our disposal are indeed variegated and provide good solutions to most of our problems, in addition to offering a programming style for every taste; for example, we may choose async
to simplify the most common flows, or totally change paradigm by using promises with their fluent chaining and robust error management, or if we want to get fancy, we can always leverage generators and feel like we are programming with blocking APIs.
This chapter should not only have taught you how to choose between one or the other solutions but also how to use them together, even in the same project...