Use TrackingAwaiter properly to track lost exceptions. Using the static method wasn't guaranteed to catch all bugs. Also convert to a singleton since there's no reason to have multiple instances.

--
MOS_MIGRATED_REVID=102158719
diff --git a/src/test/java/com/google/devtools/build/skyframe/ChainedFunction.java b/src/test/java/com/google/devtools/build/skyframe/ChainedFunction.java
index 4f87bb3..48325b0 100644
--- a/src/test/java/com/google/devtools/build/skyframe/ChainedFunction.java
+++ b/src/test/java/com/google/devtools/build/skyframe/ChainedFunction.java
@@ -54,12 +54,12 @@
         notifyStart.countDown();
       }
       if (waitToFinish != null) {
-        TrackingAwaiter.waitAndMaybeThrowInterrupt(waitToFinish,
-            key + " timed out waiting to finish");
+        TrackingAwaiter.INSTANCE.awaitLatchAndTrackExceptions(
+            waitToFinish, key + " timed out waiting to finish");
         if (waitForException) {
           SkyFunctionEnvironment skyEnv = (SkyFunctionEnvironment) env;
-          TrackingAwaiter.waitAndMaybeThrowInterrupt(skyEnv.getExceptionLatchForTesting(),
-              key + " timed out waiting for exception");
+          TrackingAwaiter.INSTANCE.awaitLatchAndTrackExceptions(
+              skyEnv.getExceptionLatchForTesting(), key + " timed out waiting for exception");
         }
       }
       for (SkyKey dep : deps) {