code: private Object getResult() throws InterruptedException, ExecutionException {
          if (ivCancelled) { // F743-11774
              if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled()) {
                  Tr.exit(tc, "getResult: throwing CancellationException");
              }
              throw new CancellationException(); // F743-11774
          }
  
          // Method ended with an exception
          if (ivException != null) {
              if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled()) {
                  Tr.exit(tc, "getResult: " + ivException);
              }
              throw new ExecutionException(ivException);
          }
  
          // F743-609CodRev
          // If the result object is itself a Future object, we need to call "get" on it
          // so that we unwrap the results and place them in this Future object.  This
          // is done to support asynchronous method calls that return results wrapped
          // in Future objects, and also to support nested asynchronous method calls.
          // Also, note that "null" is an acceptable result.
          // F743-16193
          // Remove instanceof check for Future object.  Return type validation check
          // moved to EJBMDOrchestrator.java
          Object resultToReturn = null;
          if (ivFuture != null) {
              resultToReturn = ivFuture.get(); // d650178
          }
  
          return (resultToReturn);
      }
docs: This get method returns the result of the async method call. This method
  must not be called unless ivGate indicates that results are available.
  
  @return - the result object
  
  @throws InterruptedException - if the thread is interrupted while waiting
  @throws CancellationException - if the async method was canceled successfully
  @throws ExecutionException - if the async method ended with an exception