diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/RecursivePackageProviderBackedTargetPatternResolver.java b/src/main/java/com/google/devtools/build/lib/skyframe/RecursivePackageProviderBackedTargetPatternResolver.java
index 901ef21..1ca2112 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/RecursivePackageProviderBackedTargetPatternResolver.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/RecursivePackageProviderBackedTargetPatternResolver.java
@@ -13,6 +13,7 @@
 // limitations under the License.
 package com.google.devtools.build.lib.skyframe;
 
+import static com.google.common.util.concurrent.MoreExecutors.directExecutor;
 import static com.google.devtools.build.lib.pkgcache.FilteringPolicies.NO_FILTER;
 
 import com.google.common.base.Function;
@@ -313,15 +314,19 @@
           }
         }));
     }
-    return Futures.whenAllSucceed(futures).call(new Callable<Void>() {
-      @Override
-      public Void call() throws TargetParsingException {
-        if (!foundTarget.get()) {
-          throw new TargetParsingException("no targets found beneath '" + pathFragment + "'");
-        }
-        return null;
-      }
-    });
+    return Futures.whenAllSucceed(futures)
+        .call(
+            new Callable<Void>() {
+              @Override
+              public Void call() throws TargetParsingException {
+                if (!foundTarget.get()) {
+                  throw new TargetParsingException(
+                      "no targets found beneath '" + pathFragment + "'");
+                }
+                return null;
+              }
+            },
+            directExecutor());
   }
 
   private static <T> int calculateSize(Iterable<ResolvedTargets<T>> resolvedTargets) {
