sourceval delayed =
akka.pattern.after(200.millis)(Future.failed(newIllegalStateException("OHNOES")))
val future =Future{Thread.sleep(1000);"foo"}
val result =Future.firstCompletedOf(Seq(future, delayed))
sourceimport akka.actor.typed.scaladsl.adapter._
implicit val scheduler: akka.actor.Scheduler= system.scheduler.toClassic
implicit val ec:ExecutionContext= system.executionContext
//Given some future that will succeed eventually@volatilevar failCount =0def futureToAttempt()={if(failCount <5){
failCount +=1Future.failed(newIllegalStateException(failCount.toString))}elseFuture.successful(5)}//Return a new future that will retry up to 10 times
val retried:Future[Int]= akka.pattern.retry(()=> futureToAttempt(), attempts =10,100 milliseconds)