--- a/net/minecraft/server/commands/AdvancementCommands.java
+++ b/net/minecraft/server/commands/AdvancementCommands.java
@@ -246,7 +_,12 @@
         int i = 0;
 
         for (ServerPlayer serverPlayer : targets) {
-            i += action.perform(serverPlayer, advancements);
+            // Folia start - region threading
+            i += 1;
+            serverPlayer.getBukkitEntity().taskScheduler.schedule((ServerPlayer player) -> {
+                action.perform(player, advancements);
+            }, null, 1L);
+            // Folia end - region threading
         }
 
         if (i == 0) {
@@ -310,9 +_,12 @@
             throw ERROR_CRITERION_NOT_FOUND.create(Advancement.name(advancement), criterionName);
         } else {
             for (ServerPlayer serverPlayer : targets) {
-                if (action.performCriterion(serverPlayer, advancement, criterionName)) {
-                    i++;
-                }
+                // Folia start - region threading
+                ++i;
+                serverPlayer.getBukkitEntity().taskScheduler.schedule((ServerPlayer player) -> {
+                    action.performCriterion(player, advancement, criterionName);
+                }, null, 1L);
+                // Folia end - region threading
             }
 
             if (i == 0) {
