I would cache the result inside `#failed_steps` then, I think it's a `execution_plan` responsibility to be efficient.