[squash] only wait once and return whether the state actually changed