in storehaus-core/src/main/scala/com/twitter/storehaus/FutureOps.scala [63:74]
def selectFirstSuccessfulTrial[T](futures: Seq[Future[T]])(pred: T => Boolean): Future[T] =
Future.select(futures)
.flatMap { case (completedTry, otherFutures) =>
if (otherFutures.isEmpty) {
Future.const(completedTry)
} else {
completedTry.filter(pred) match {
case Throw(e) => selectFirstSuccessfulTrial(otherFutures)(pred)
case Return(t) => Future.value(t)
}
}
}