Prevent SOE on Stream traverse with Future

As title says.
@tixxit I believe you that this is a fix, but I don't understand it :)

Can someone help me out with how this helps prevent stack overflows?

Is it necessary for it to be `Future.apply` as opposed to `Future.successful`? I ask because `Future.apply` has the overhead of forking work off to the executor.