Repeats block as a step while it succeeds, so a failed iteration consumes nothing. An iteration that succeeds without consuming anything ends the loop and is not counted, because repeating it could never terminate.
Return
how many times it succeeded while making progress