¿Hay secuencial Future.find?

Tengo alguna función de efecto secundario,

def f(): Future[Int] = {
  val n = Random.nextInt()
  println(s"Generated $n")
  Future(n)
}

y quiero ejecutarlo repetidamente hasta que el predicado regrese verdadero.

def success(n: Int): Boolean = n % 2 == 0

Mi plan es construirStream de resultados

val s = Stream.fill(10)(f)

y luego usarFuture.find para obtener el primer resultado que satisfaga el predicado.

Future.find(s)(success) map println

El problema es eseFuture.find ejecuta todos los futuros en paralelo y quiero que ejecute futuros secuencialmente uno tras otro hasta que el predicado regrese verdadero.

scala> Future.find(s)(success) map println
Generated -237492703
Generated -935476293
Generated -1155819556
Generated -375506595
Generated -912504491
Generated -1307379057
Generated -1522265611
Generated 1163971151
Generated -516152076
res8: scala.concurrent.Future[Unit] = scala.concurrent.impl.Promise$DefaultPromise@37d28f02
Some(-1155819556)

La pregunta es cómo ejecutar secuencia de futuros secuencialmente hasta que el predicado regrese verdadero. ¿Hay alguna función adecuada en la biblioteca estándar o de terceros?

Respuestas a la pregunta(3)

Su respuesta a la pregunta