Update the object cache/properties only when action is successful.

 Previously some object properties were being set before the event
 (change label/purge), and if that event threw an exception for some reason,
 the object would have a incorrect value, or not be present in the cache.