Phil Derome (38) [Avatar] Offline
#1
Section 1.2.3 Understanding the Reactive architecture

Of the three items, the first one is clear (loose coupling, but the distinction between second (asynchronous) and third (non-blocking) is not.

Both the second and third items reuse the same vocabulary so they appear to be synonymous of each other.

Asynchronous (#2) uses the wording "non-blocking" (#3), which feels circular on quick read.

The distinction seems to be #2 is able not to wait for a task to complete whereas #3 never waits for a task to complete.

It might be useful to discuss parallel and concurrent in the same section or to introduce examples that distinguish #2 and #3. Without suggesting to add one or two pages of material here, I'd like to mention that a rather long post on LinkedIn attempted to clarify some of those (and you may not agree with it): https://www.linkedin.com/pulse/choosing-concurrency-stack-sergei-winitzki