app/lib/Delayer.scala (15 lines of code) (raw):
package lib
import org.apache.pekko.actor.ActorSystem
import java.util.concurrent.TimeUnit
import scala.concurrent.ExecutionContext.Implicits.global
import scala.concurrent.{Future, Promise}
class Delayer(system: ActorSystem) {
def doAfterSmallDelay(f: => Unit): Unit = {
system.scheduler.scheduleOnce(concurrent.duration.Duration(1, TimeUnit.SECONDS))(f)
}
def delayTheFuture[T](f: => Future[T]): Future[T] = {
val p = Promise[T]()
doAfterSmallDelay(p.completeWith(f))
p.future
}
}