In this talk, Adam Crabtree, LinkedIn Server Engineer and BayNode Founder discusses the distinction between asynchrony and control-flow, and their intimate connections to error handling. In modern Node.js development, control-flow is the guardian at the gates, dealing with asynchrony and enforcing contracts so you don’t have to. Control-flow helps juggle values, handle ordering, deal with errors, and sometimes hide asynchrony types all together. Additionally, there are many different asynchrony types including callbacks, promises, thunks and async generators and they each handle errors differently. Node.js itself has two very different ways of dealing with errors. Know why, and how it affects the code you write.