Programming with events is not always easy. The control and context switches, defining the paradigm often confound those new to evented systems. This seemingly reckless loss of control and the resulting complexity drives many developers away from these ideas. Students in introductory programming courses normally develop a mindset in which program flow can be dictated, where a program whose execution flow does not proceed sequentially from A to B can bend understanding.
By examining the evolution of the architectural problems Node is now attempting to solve for network applications—in terms of scaling, in terms of code organization, in general terms of data and complexity volume, in terms of state awareness, and in terms of well-defined data and process boundaries—we have learned how managing these event queues can be done intelligently. We have seen how different event sources are predictably stacked for an event loop to process, and how far-future events can enter and re-enter contexts...