Error propagation

Errors are only propagated downstream, ultimately reaching the point where the source is discharged, typically leading to an exception being thrown there. This, in turn, should end the enclosing scope, and cancel any other forks, that are still running and handling the upstream processing stages.

The approach we decided to take (only propagating errors downstream) is one of the two possible designs - with the other being re-throwing an exception when it’s encountered. Please see the respective ADR for a discussion.