code: private static <T> T get(final Future<T> future) throws SpannerException {
      final Context context = Context.current();
      try {
        return future.get();
      } catch (InterruptedException e) {
        // We are the sole consumer of the future, so cancel it.
        future.cancel(true);
        throw SpannerExceptionFactory.propagateInterrupt(e);
      } catch (ExecutionException | CancellationException e) {
        throw newSpannerException(context, e);
      }
    }
docs: Gets the result of an async RPC call, handling any exceptions encountered.