code: @Override
      @FFDCIgnore({ ExecutionException.class })
      public R get(long methodTimeout, TimeUnit methodUnit) throws InterruptedException, ExecutionException, TimeoutException {
          R result = null;
          Future<Future<R>> resultFuture = getResultFuture();
  
          try {
              long start = System.nanoTime();
              long methodNanos = TimeUnit.NANOSECONDS.convert(methodTimeout, methodUnit);
              Future<R> innerFuture = resultFuture.get(methodNanos, TimeUnit.NANOSECONDS);
              long middle = System.nanoTime();
              long diff = middle - start;
              long remaining = methodNanos - diff;
              result = innerFuture.get(remaining, TimeUnit.NANOSECONDS);
          } catch (ExecutionException e) {
              if (e.getCause() instanceof com.ibm.ws.microprofile.faulttolerance.spi.ExecutionException) {
                  throw new ExecutionException(e.getCause().getCause());
              } else {
                  throw e;
              }
          }
          return result;
  
      }
docs: {@inheritDoc}