@Override
public NotifyingFuture<V> putAsync(final K key, final V value, final long lifespan, final TimeUnit lifespanUnit, final long maxIdle, final TimeUnit maxIdleUnit) {
assertRemoteCacheManagerIsStarted();
final NotifyingFutureImpl<V> result = new NotifyingFutureImpl<V>();
Future future = executorService.submit(new Callable() {
@Override
public Object call() throws Exception {
V prevValue = put(key, value, lifespan, lifespanUnit, maxIdle, maxIdleUnit);
result.notifyFutureCompletion();
return prevValue;