@Override
        public long getDelay(final TimeUnit unit) {
            final long nowMs = System.currentTimeMillis();
            long diffMs = expireTimeWithBufferEpochMs - nowMs;
            LOGGER.trace(() -> LogUtil.message("now: {}, expireTime: {}, expireTimeWithBuffer: {}, delayMs:  {} ({})",
                    LogUtil.instant(nowMs),
                    LogUtil.instant(expireTimeEpochMs),
                    LogUtil.instant(expireTimeWithBufferEpochMs),
                    ModelStringUtil.formatCsv(diffMs),
                    Duration.ofMillis(diffMs) + ")"));
            return unit.convert(diffMs, TimeUnit.MILLISECONDS);
        }
A wrapper around a {@link Refreshable} so the {@link Refreshable} can be put on a
{@link java.util.concurrent.DelayQueue}.
stroom-security/stroom-security-common-impl/src/main/java/stroom/security/common/impl/RefreshManager.java