Calling error() on a chain step, or stepError() on a chain, does not prevent additional chain steps from proceeding

Description

Context:

1. Create a CommandChain, populate it with AsyncCommandChainSteps, and start it2.
2. The first one completes OK, so the second one starts
3. The second one completes OK so the result handler is invoked, but in the result handler, call error() on the step
4. error() dispatches the chain failed event and marks the chain as complete
5. After the result handler invoked in step 3 is done, the chain runs proceed() and keeps going because the current position (2 out of 3) isn't the last step yet

There are a few ways this could be handled. My take is that the easiest option, and the one that would handle this for most/all cases, is the add a check on isComplete to the AbstractChain proceed() method, so the chain only proceeds if it is not complete yet:

Environment

None

Status

Assignee

ChrisC

Reporter

Brian Kotek

Labels

None

Fix versions

Affects versions

Priority

Minor
Configure