override def merge()

in storehaus-algebra/src/main/scala/com/twitter/storehaus/algebra/ConcurrentHashMapMergeableStore.scala [40:50]


  override def merge(kv: (K, V)): Future[Option[V]] = {
    val (k, v) = kv
    map.get(k) match {
      case null =>
        if (map.putIfAbsent(k, v) == null) Future.None
        else merge(kv)
      case oldV =>
        if (map.replace(k, oldV, semigroup.plus(oldV, v))) Future.value(Some(oldV))
        else merge(kv)
    }
  }