@Override
public Scheduled schedule(Duration initialDelay, Duration interval, Runnable callback) {
checkOperation(OperationType.COMMAND, "callbacks can only be scheduled during command execution");
checkArgument(!initialDelay.isNegative(), "initialDelay cannot be negative");
checkArgument(!interval.isNegative(), "interval cannot be negative");
checkNotNull(callback, "callback cannot be null");
log.trace("Scheduled repeating callback {} with initial delay {} and interval {}", callback, initialDelay, interval);
return new ScheduledTask(callback, initialDelay.toMillis(), interval.toMillis()).schedule();
}