@Override
 public <D extends Document<?>> D replace(
     D document, ReplicateTo replicateTo, long timeout, TimeUnit timeUnit) {
   return Blocking.blockForSingle(
       asyncBucket.replace(document, replicateTo).single(), timeout, timeUnit);
 }