Счетчик приращений и декретов FireStore Transactions получает непоследовательный результат

Вот код транзакции: –

var sfDocRef = firebaseCloudStore.collection("New").document(documentRef.get(pos)) firebaseCloudStore.runTransaction(Transaction.Function { transaction - > val snapshot = transaction.get(sfDocRef) var newlikes: Double if (isliked == true) { newlikes = snapshot.getDouble("likes") !!+1 } else { newlikes = snapshot.getDouble("likes") !!-1 } transaction.update(sfDocRef, "likes", newlikes) }).addOnSuccessListener { var ref = firebaseCloudStore.collection("New").document(documentRef.get(pos)).get().addOnCompleteListener { list = it.result.toObject(New::class.java) arraylist.get(pos).likes = list.likes arraylist.get(pos).isliked = !arraylist.get(pos).isliked adapter.notifyItemChanged(pos) } }.addOnFailureListener(OnFailureListener { e - > Log.w("TAG", "Transaction failure.", e) }) 

Здесь я реализовал транзакции FireStore, как упоминалось в документах, но все еще получаю противоречивый результат, например, если вы нажимаете кнопку как многократно быстро, тогда результат будет либо больше, либо меньше. Есть ли ошибка в коде, или я делаю что-то неправильно?