def collect[T, U]()

in src/main/scala/com/twitter/stitch/Arrow.scala [3899:3912]


  def collect[T, U](arrows: Seq[Arrow[T, U]]): Arrow[T, Seq[U]] =
    arrows match {
      case Seq() => value(Seq.empty[U])
      case Seq(a) => a.map(Seq(_))
      case _ =>
        val throws: PartialFunction[Arrow[T, U], Throwable] = { case Const(Throw(e)) => e }
        val returns: PartialFunction[Arrow[T, U], U] = { case Const(Return(v)) => v }
        if (arrows.exists(throws.isDefinedAt))
          Arrow.exception(arrows.collectFirst(throws).get)
        else if (arrows.forall(returns.isDefinedAt))
          Arrow.value(arrows.collect(returns))
        else
          Collect(arrows)
    }