import scala.concurrent._ import scala.concurrent.ExecutionContext.Implicits.global def printSlowFuture(name: String): Future[String] = { Future{ Thread.sleep(1000) // do nothing for 1 second name + " returned!" } } def printFast(name: String): String = { name + " returned!" } // no need to wrap here, becauce the function will return a Future on its own printSlowFuture("first!") printFast("second!") // >>> res1: String = "second! returned!"" // >>> res2: String = "first! returned!"