code: private Void handleGetContentFailure(Throwable ex) {
          ex = Exceptions.unwrap(ex);
          boolean success;
          try {
              success = handle(ex);
          } catch (Throwable ex2) {
              ex.addSuppressed(ex2);
              success = false;
          }
  
          if (success) {
              // We were able to switch; tie the outcome of our result to the outcome of the new entry's getContent().
              setOutcomeAfterSecondEntry();
          } else {
              // Unable to switch.
              this.result.completeExceptionally(ex);
          }
  
          return null;
      }
docs: Handles an exception that was caught in a callback from getContent. This does the same steps as handle(), but
  it is invoked from an exceptionally() callback, so proper care has to be taken in order to guarantee that
  the result future will complete one way or another.