code: public static void join(Object strand, long timeout, TimeUnit unit) throws ExecutionException, InterruptedException, TimeoutException {
          Strand.join(strand, timeout, unit);
      }
docs: Awaits the termination of a given strand, at most for the timeout duration specified.
  This method blocks until this strand terminates or the timeout elapses.
  
  @param strand  the strand to join. May be an object of type {@code Strand}, {@code Fiber} or {@code Thread}.
  @param timeout the maximum duration to wait for the strand to terminate in the time unit specified by {@code unit}.
  @param unit    the time unit of {@code timeout}.
  @throws TimeoutException     if this strand did not terminate by the time the timeout has elapsed.
  @throws ExecutionException   if this strand has terminated as a result of an uncaught exception
  (which will be the {@link Throwable#getCause() cause} of the thrown {@code ExecutionException}.
  @throws InterruptedException