detect duplicates and error.  Update flush logic and update the @property_hash[:ensure: state whenever we have been waiting for a state change