Prevent SOE on Stream traverse with Future

As title says.
Here is a simple benchmark that just measures the cost of the `join`, on my MBP Retina (2GHz, i7).

    @State(Scope.Benchmark)
    class JoinState {
      val f = Future(1)
      Await.result(f, 1.seconds)
    }
    
    class HelloBenchmark {
      @GenerateMicroBenchmark
      def joinFuture(s: JoinState) =
        Await.result(Future(s.f).flatMap(a => a), 5.seconds)
    }

    Result : 95.668 ±(99.9%) 6.564 ops/ms
    Statistics: (min, avg, max) = (87.919, 95.668, 118.016), stdev = 7.559
    Confidence interval (99.9%): [89.104, 102.232]
    
    
    Benchmark                               Mode   Samples         Mean   Mean error    Units
    n.t.s.b.e.HelloBenchmark.joinFuture    thrpt        20       95.668        6.564   ops/ms