code: @Override
      public V get(long timeout, TimeUnit unit) throws InterruptedException, ExecutionException, TimeoutException {
          if (this.m_coordinationLatch.await(timeout, unit) == false) {
              throw new TimeoutException();
          }
  
          if (m_pendingException != null) {
              if (m_pendingException instanceof ExecutionException) {
                  throw (ExecutionException) m_pendingException;
              } else {
                  throw (RuntimeException) m_pendingException;
              }
          }
  
          throw new CancellationException();
      }
docs: /*
  (non-Javadoc)
  
  @see java.util.concurrent.Future#get(long, java.util.concurrent.TimeUnit)