We learned a lot in this chapter about the following:
EventEmitters and their role in HTTP client and server objects
Using an EventEmitter to separate acting on HTTP request data from the mechanics of receiving that data
Listening to all the events of an HTTP object or other EventEmitter as a debugging aid
Implementing an HTTP server
Routing incoming requests in an HTTP server
Using the MIME protocol to identify content data type
Implementing an HTTP client
Now that we've learned the basics of implementing a web application with Node, we're ready to start towards useful applications. That means storing data somewhere, and acting on that data. In the next chapter, we'll look at several means of storing data and retrieving data from external datastores.