code: public final Long getTimeout() {
          synchronized (this.state) {
              return this.state.timeoutFuture == null ? null : this.state.timeoutFuture
                      .getDelay(TimeUnit.MILLISECONDS) + System.currentTimeMillis();
          }
      }
docs: Gets a timeout possibly set on the {@code Stream} and represented by the absolute
  milliseconds timestamp when the {@code Stream} will be closed.
  
  @return the milliseconds timestamp when this {@code Stream} will be closed, or null if no
  timeout has been set