diff --git a/pkg/kvstore/etcd.go b/pkg/kvstore/etcd.go
index <HASH>..<HASH> 100644
--- a/pkg/kvstore/etcd.go
+++ b/pkg/kvstore/etcd.go
@@ -1049,15 +1049,15 @@ func (e *etcdClient) UpdateIfDifferentIfLocked(ctx context.Context, key string, 
 
 	increaseMetric(key, metricRead, "Get", duration.EndError(err).Total(), err)
 
-	if !txnresp.Succeeded {
-		return false, ErrLockLeaseExpired
-	}
-
 	// On error, attempt update blindly
 	if err != nil {
 		return true, e.UpdateIfLocked(ctx, key, value, lease, lock)
 	}
 
+	if !txnresp.Succeeded {
+		return false, ErrLockLeaseExpired
+	}
+
 	getR := txnresp.Responses[0].GetResponseRange()
 	if getR.Count == 0 {
 		return true, e.UpdateIfLocked(ctx, key, value, lease, lock)
pkg/kvstore: fix nil pointer in error while doing a transaction in etcd

txnresp can obviously be nil if err is != nil. We should check if
txnresp.Succeeded after checking if err == nil first.

Fixes: <I>c<I>ece5 ("pkg/kvstore: implement new *IfLocked methods for etcd")