In Concurrency§
See primary documentation in context for react.
The react keyword introduces a block of code containing one or more whenever keywords to watch asynchronous events. The main difference between a supply block and a react block is that the code in a react block runs where it appears in the code flow, whereas a supply block has to be tapped before it does anything.
Another difference is that a supply block can be used without the whenever keyword, but a react block requires at least one whenever to be of any real use.
react { whenever Supply.interval(2) -> $v { say $v; done() if $v == 4; } }
Here the whenever keyword uses .act to create a tap on the Supply from the provided block. The react block is exited when done() is called in one of the taps.
An on-demand Supply can also be created from a list of values that will be emitted in turn, thus the first on-demand example could be written as:
react { whenever Supply.from-list(1..10) -> $v { say $v; } }