Correctly flag completion of update even if the promise fails.

A failed update would leave _promiseRunning set, causing an incorrect
exception to be thrown the next time round.