private CacheEntry<CachedResponse> refresh(String cacheKey, CachingRequest request) {
CacheEntry<CachedResponse> entry;
try {
refresh.put(cacheKey, request);
SenderResponse response = sender.execute(request.getSenderRequest());
request.setLastRefresh(System.currentTimeMillis());
CachedResponse cached = new CachedResponse(request.getSenderRequest(), response);
entry = new CacheEntry<CachedResponse>(cached, request.getHardTtl(), request.getSoftTtl());
//cache only 20x responses
if (response.getHttpStatusCode() < 300) {
cache.set(cacheKey, entry);
}
} finally {
refresh.remove(cacheKey);
}