Proposed change to complete failed promises

Right now, the protection loop doesn't mark the promises as redeemed if they fail.

This means that it can get into an infinite loop which can cause a contention fight with the viz manager, if anything within the promise takes the viz lock.

This would cause it to stop trying to re-execute failed transactions. What do you think Stephen? Is this right, do we want to put in the protection somewhere else?