code: public static <T, R> Function1<T, R> memoizeFunctionAsync(final Function<T, R> fn, ScheduledExecutorService ex, long updateRateInMillis){
          final Map<T, R> lazy = new ConcurrentHashMap<>();
  
          ReactiveSeq.generate(()->{
  
              lazy.forEach((k,v)->{
  
                  lazy.put(k,fn.apply(k));
              });
              return null;
          }).scheduleFixedRate(updateRateInMillis,ex);
  
          return t -> lazy.computeIfAbsent(t, fn);
      }
docs: Memoize a function and update the cached values asynchronously using the provided Scheduled Executor Service
  Does not support null keys
  
  @param fn Function to Memoize
  @param ex Scheduled Executor Service
  @param updateRateInMillis Time in millis between async updates
  @param <T> Input Type of Function
  @param <R> Return type of Function
  @return Memoized asynchronously updating function