def sideEffect[T, U]()

in storehaus-algebra/src/main/scala/com/twitter/storehaus/algebra/reporting/Reporter.scala [24:40]


  def sideEffect[T, U](
    params: U, f: Future[T],
    sideEffect: (U, Future[T]) => Future[Unit]
  ): Future[T] =
    Future.join(f, sideEffect(params, f)).map(_._1)

  def sideEffect[T, K, U](
    params: U, f: Map[K, Future[T]],
    sideEffect: (U, Map[K, Future[T]]) => Map[K, Future[Unit]]
  ): Map[K, Future[T]] = {
    val effected = sideEffect(params, f)
    f.map{case (k, v) =>
      val unitF = effected.getOrElse(k,
        sys.error("Reporter for multi side effect didn't return a future for key" + k.toString))
      (k, Future.join(v, unitF).map(_._1))
    }
  }