public Closure join(final long timeoutMillis) throws InterruptedException, TimeoutException {
        final JoinableClosure joinable = castToJoinalbe(this.done);
        joinable.join(timeoutMillis);
        return joinable.getClosure();
    }
Waiting for the task to complete with a timeout millis, to note that throughput
may be reduced, which is generally not recommended.

@param timeoutMillis  the maximum millis to wait
@return done closure
@throws InterruptedException if the current thread is interrupted while waiting
@throws TimeoutException if timeout
@since 1.3.1
jraft-core/src/main/java/com/alipay/sofa/jraft/entity/Task.java