@Nonnull
    default <T> Promise<T> callLater(@Nonnull Callable<T> callable, long delay, @Nonnull TimeUnit unit) {
        Objects.requireNonNull(callable, "callable");
        return Promise.supplyingDelayed(getContext(), Delegates.callableToSupplier(callable), delay, unit);
    }
Compute the result of the passed callable at some point in the future

@param callable the callable
@param delay    the delay to wait before calling the supplier
@param unit     the unit of delay
@param <T>      the return type
@return a Promise which will return the result of the computation
helper/src/main/java/me/lucko/helper/scheduler/Scheduler.java