From the beginning, the Reactor library was designed with the aim of omitting callback hell and deeply nested code when building asynchronous pipelines. We described these phenomena and complications caused by them in Chapter 1, Why Reactive Spring? In the quest for linear code, the library's authors formulated an analogy using an assembly line: "You can think of data processed by a reactive application as moving through an assembly line. Reactor is both the conveyor belt and the workstations."
The primary goal of the library is to improve the readability of the code and introduce composability to workflows defined with the Reactor library. The Public API is designed to be high-level but very versatile, but at the same time it does not sacrifice performance. The API provides a rich set of operators (the "...