From part11.pdf:
After a task has completed, the next method is called with the index of the finished task in the ‘self.tasks‘ list
the return value of the next method is then made the collection execution.state.
If the returned state is ‘RUNNING‘, then the subsequent task is started, otherwise no action is performed.