public ResultT getBlockingResult() { try { return getAsyncResult().get(); } catch (InterruptedException e) { Thread.currentThread().interrupt(); cancel(); throw Status.CANCELLED.withCause(e).asRuntimeException(); } catch (ExecutionException e) { cancel(); throw Status.fromThrowable(e).asRuntimeException(); } }