public ScheduledFuture<?> loadAndScheduleEvict(final String key,
                                                   final long refreshPeriod,
                                                   final TimeUnit refreshPeriodTimeUnit) {
        return executorService.schedule(new Runnable() {
            @Override
            public void run() {
                evict(key);
            }
        }, refreshPeriod, refreshPeriodTimeUnit);
    }
Abstract method to be implemented by each service to handle storing endpoints
in it's cache. This method must schedule refresh of cache values whenever putting
a new endpoint into it's cache.

@param key - The cache key
@param endpointDetails - The details for an endpoint including the address and cache period.
@return The endpoint used for this request
aws-java-sdk-core/src/main/java/com/amazonaws/endpointdiscovery/EndpointDiscoveryRefreshCache.java