only optimistic update if success