diff --git a/src/main/java/com/google/devtools/build/lib/query2/SkyQueryEnvironment.java b/src/main/java/com/google/devtools/build/lib/query2/SkyQueryEnvironment.java
index e13a338..bae75d9 100644
--- a/src/main/java/com/google/devtools/build/lib/query2/SkyQueryEnvironment.java
+++ b/src/main/java/com/google/devtools/build/lib/query2/SkyQueryEnvironment.java
@@ -13,6 +13,8 @@
 // limitations under the License.
 package com.google.devtools.build.lib.query2;
 
+import static com.google.common.base.Throwables.throwIfInstanceOf;
+import static com.google.common.base.Throwables.throwIfUnchecked;
 import static com.google.common.collect.ImmutableSet.toImmutableSet;
 import static com.google.common.util.concurrent.Futures.immediateVoidFuture;
 import static com.google.common.util.concurrent.MoreExecutors.directExecutor;
@@ -22,7 +24,6 @@
 import com.google.common.base.Preconditions;
 import com.google.common.base.Predicate;
 import com.google.common.base.Predicates;
-import com.google.common.base.Throwables;
 import com.google.common.collect.ArrayListMultimap;
 import com.google.common.collect.Collections2;
 import com.google.common.collect.ImmutableList;
@@ -444,8 +445,9 @@
           }
         }
 
-        Throwables.propagateIfPossible(
-            throwableToThrow, QueryException.class, InterruptedException.class);
+        throwIfInstanceOf(throwableToThrow, QueryException.class);
+        throwIfInstanceOf(throwableToThrow, InterruptedException.class);
+        throwIfUnchecked(throwableToThrow);
       }
     }
   }
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/TargetProviderForQueryEnvironment.java b/src/main/java/com/google/devtools/build/lib/runtime/TargetProviderForQueryEnvironment.java
index 65d8a16..1dc0986 100644
--- a/src/main/java/com/google/devtools/build/lib/runtime/TargetProviderForQueryEnvironment.java
+++ b/src/main/java/com/google/devtools/build/lib/runtime/TargetProviderForQueryEnvironment.java
@@ -13,8 +13,10 @@
 // limitations under the License.
 package com.google.devtools.build.lib.runtime;
 
+import static com.google.common.base.Throwables.throwIfInstanceOf;
+import static com.google.common.base.Throwables.throwIfUnchecked;
+
 import com.google.common.base.Preconditions;
-import com.google.common.base.Throwables;
 import com.google.devtools.build.lib.cmdline.Label;
 import com.google.devtools.build.lib.cmdline.PackageIdentifier;
 import com.google.devtools.build.lib.events.ExtendedEventHandler;
@@ -72,7 +74,8 @@
     if (exception != null) {
       // PackageFunction should be catching, swallowing, and rethrowing all transitive
       // errors as NoSuchPackageExceptions or constructing packages with errors.
-      Throwables.propagateIfPossible(exception, NoSuchPackageException.class);
+      throwIfInstanceOf(exception, NoSuchPackageException.class);
+      throwIfUnchecked(exception);
       throw new IllegalStateException("Unexpected Exception type from PackageValue for " + pkgId);
     }
     if (walkableGraph.isCycle(pkgId)) {
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 666202a..a800de8 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.base.Throwables.throwIfInstanceOf;
 import static com.google.common.util.concurrent.Futures.immediateCancelledFuture;
 import static com.google.common.util.concurrent.Futures.immediateFailedFuture;
 import static com.google.common.util.concurrent.MoreExecutors.directExecutor;
@@ -212,7 +213,7 @@
               callback,
               MoreExecutors.newDirectExecutorService());
     } catch (QueryException e) {
-      Throwables.propagateIfPossible(e, exceptionClass);
+      throwIfInstanceOf(e, exceptionClass);
       throw new IllegalStateException(e);
     } catch (NoSuchPackageException e) {
       // Can happen during a Skyframe no-keep-going evaluation.
diff --git a/src/main/java/com/google/devtools/build/lib/worker/SimpleWorkerPool.java b/src/main/java/com/google/devtools/build/lib/worker/SimpleWorkerPool.java
index 5435a0f..cc16ee9 100644
--- a/src/main/java/com/google/devtools/build/lib/worker/SimpleWorkerPool.java
+++ b/src/main/java/com/google/devtools/build/lib/worker/SimpleWorkerPool.java
@@ -13,7 +13,9 @@
 // limitations under the License.
 package com.google.devtools.build.lib.worker;
 
-import com.google.common.base.Throwables;
+import static com.google.common.base.Throwables.throwIfInstanceOf;
+import static com.google.common.base.Throwables.throwIfUnchecked;
+
 import com.google.common.flogger.GoogleLogger;
 import java.io.IOException;
 import java.util.HashMap;
@@ -84,7 +86,9 @@
     try {
       return super.borrowObject(key);
     } catch (Throwable t) {
-      Throwables.propagateIfPossible(t, IOException.class, InterruptedException.class);
+      throwIfInstanceOf(t, IOException.class);
+      throwIfInstanceOf(t, InterruptedException.class);
+      throwIfUnchecked(t);
       throw new RuntimeException("unexpected", t);
     }
   }
@@ -98,7 +102,8 @@
         updateShrunkBy(key, obj.getWorkerId());
       }
     } catch (Throwable t) {
-      Throwables.propagateIfPossible(t, InterruptedException.class);
+      throwIfInstanceOf(t, InterruptedException.class);
+      throwIfUnchecked(t);
       throw new RuntimeException("unexpected", t);
     }
   }
diff --git a/src/main/java/com/google/devtools/build/lib/worker/WorkerPoolImpl.java b/src/main/java/com/google/devtools/build/lib/worker/WorkerPoolImpl.java
index 6d346ef..7ea6b21 100644
--- a/src/main/java/com/google/devtools/build/lib/worker/WorkerPoolImpl.java
+++ b/src/main/java/com/google/devtools/build/lib/worker/WorkerPoolImpl.java
@@ -13,7 +13,9 @@
 // limitations under the License.
 package com.google.devtools.build.lib.worker;
 
-import com.google.common.base.Throwables;
+import static com.google.common.base.Throwables.throwIfInstanceOf;
+import static com.google.common.base.Throwables.throwIfUnchecked;
+
 import com.google.common.base.VerifyException;
 import com.google.common.collect.ImmutableMap;
 import com.google.common.flogger.GoogleLogger;
@@ -135,7 +137,8 @@
       pool.setEvictionPolicy(evictionPolicy);
       pool.evict();
     } catch (Throwable t) {
-      Throwables.propagateIfPossible(t, InterruptedException.class);
+      throwIfInstanceOf(t, InterruptedException.class);
+      throwIfUnchecked(t);
       throw new VerifyException("unexpected", t);
     }
   }
@@ -152,7 +155,9 @@
     try {
       result = getPool(key).borrowObject(key);
     } catch (Throwable t) {
-      Throwables.propagateIfPossible(t, IOException.class, InterruptedException.class);
+      throwIfInstanceOf(t, IOException.class);
+      throwIfInstanceOf(t, InterruptedException.class);
+      throwIfUnchecked(t);
       throw new RuntimeException("unexpected", t);
     }
     return result;
@@ -168,7 +173,8 @@
     try {
       getPool(key).invalidateObject(key, obj);
     } catch (Throwable t) {
-      Throwables.propagateIfPossible(t, InterruptedException.class);
+      throwIfInstanceOf(t, InterruptedException.class);
+      throwIfUnchecked(t);
       throw new RuntimeException("unexpected", t);
     }
   }
