A monad m is said to allow scheduling if you can pass a number of actions m a to it,
and those can be executed at the same time concurrently.
You can observe the result of the actions after some time:
Some actions will complete first, and the results of these are returned then as a list NonEmpty a.
Other actions are still running, and for these you will receive continuations of type m a,
which you can further run or schedule to completion as you like.