wip. Reproducer added.
diff --git a/modules/sql-engine/src/integrationTest/java/org/apache/ignite/internal/sql/api/ItCommonApiTest.java b/modules/sql-engine/src/integrationTest/java/org/apache/ignite/internal/sql/api/ItCommonApiTest.java
index ecb8978..112d857 100644
--- a/modules/sql-engine/src/integrationTest/java/org/apache/ignite/internal/sql/api/ItCommonApiTest.java
+++ b/modules/sql-engine/src/integrationTest/java/org/apache/ignite/internal/sql/api/ItCommonApiTest.java
@@ -24,12 +24,16 @@
 import java.time.LocalDateTime;
 import java.time.ZoneId;
 import java.time.format.DateTimeFormatter;
+import java.util.concurrent.CompletableFuture;
+import java.util.concurrent.atomic.AtomicReference;
 import org.apache.ignite.Ignite;
 import org.apache.ignite.internal.sql.BaseSqlIntegrationTest;
 import org.apache.ignite.sql.ResultSet;
 import org.apache.ignite.sql.SqlRow;
+import org.apache.ignite.table.KeyValueView;
 import org.apache.ignite.table.Table;
 import org.apache.ignite.table.Tuple;
+import org.apache.ignite.tx.Transaction;
 import org.junit.jupiter.api.Test;
 
 /** Test common SQL API. */
@@ -39,6 +43,27 @@
         return 1;
     }
 
+    @Test
+    public void rollbackAsync() {
+        Ignite node = CLUSTER.aliveNode();
+
+        sql("CREATE TABLE IF NOT EXISTS TEST(ID INT PRIMARY KEY, VAL0 INT)");
+
+        KeyValueView<Tuple, Tuple> view1 = node.tables().table("TEST").keyValueView();
+
+        AtomicReference<CompletableFuture<Void>> rollbackFut = new AtomicReference<>();
+
+        Transaction tx = node.transactions().begin();
+        view1.getAsync(tx, Tuple.create().set("id", 101))
+                .handle((unused, err) -> {
+                    rollbackFut.set(tx.rollbackAsync()); // unconditional roll back
+
+                    return null;
+                }).join();
+
+        rollbackFut.get().join(); // <- FAILS
+    }
+
     /** Check timestamp type operations correctness using sql and kv api. */
     @Test
     public void checkTimestampOperations() {