public void reset(long timeoutMs) {
        if (timeoutMs < 0)
            throw new IllegalArgumentException("Invalid negative timeout " + timeoutMs);

        this.timeoutMs = timeoutMs;
        this.startMs = this.currentTimeMs;

        if (currentTimeMs > Long.MAX_VALUE - timeoutMs)
            this.deadlineMs = Long.MAX_VALUE;
        else
            this.deadlineMs = currentTimeMs + timeoutMs;
    }
Reset the timer using a new timeout. Note that this does not update the cached current time
in milliseconds, so it typically must be accompanied with a separate call to {@link #update()}.
Typically, you can just use {@link #updateAndReset(long)}.

@param timeoutMs The new timeout in milliseconds
s3stream/src/main/java/com/automq/stream/utils/Timer.java