@Override
 public CompletableFuture<Void> removeListener(AtomicValueEventListener<V> listener) {
   checkNotNull(listener, "listener must not be null");
   final MeteringAgent.Context newTimer = monitor.startTimer(REMOVE_LISTENER);
   MapEventListener<String, byte[]> mapListener = listeners.remove(listener);
   if (mapListener != null) {
     return backingMap.removeListener(mapListener).whenComplete((r, e) -> newTimer.stop(e));
   } else {
     newTimer.stop(null);
     return CompletableFuture.completedFuture(null);
   }
 }