In this chapter, we covered the paradigm of event-driven programming before covering how asyncio works and how we can use it for our own event-driven Python systems.
We went in depth into the asyncio module and the various ways you can do things such as construct your event loops, chain coroutines within this loop, and set up event handlers, to name but a few things.
In the next chapter, we'll look at how you can create reactive programs using the powerful RxPy module and cover how the reactive programming paradigm differs from your typical event-based programs.