code: @Override
      public Socket get(long timeout, TimeUnit unit) throws InterruptedException, ExecutionException, TimeoutException {
          time = timeout;
          tu = unit;
          try {
              if (!latch.await(timeout, unit) || te != null) {
                  throw te == null ? new TimeoutException() : te;
              }
          } finally {
              te = null;
          }
          return socket;
      }
docs: {@inheritDoc}