title: Why Future.sequence executes my futures in parallel rather than in series?
body: <p>The word "<em>sequence</em>" means a <strong>series</strong> of actions one after the other. </p>
  
  <pre><code>object Test {
  
    def main(args: Array[String]) {
  
      def producer() = {
        val list = Seq(
            future { println("startFirst"); Thread.sleep(3000); println("stopFirst") }, 
            future { println("startSecond"); Thread.sleep(1000); println("stopSecond") }
        )
        Future.sequence(list)
      }
  
     Await.result(producer, Duration.Inf)
    }
  }
  </code></pre>
  
  <p>Therefore I expect this program to print: 
  <code>
  startFirst
  stopFirst
  startSecond
  stopSecond
  </code></p>
  
  <p>or even:
  <code>
  startSecond
  stopSecond
  startFirst
  stopFirst
  </code></p>
  
  <p>but not (as it happens): 
  <code>
  startFirst
  startSecond
  stopSecond
  stopFirst
  </code></p>
  
  <p>Why this method is not called <code>Future.parallel()</code>? 
  And what should I use to guarantee that all futures in a  <code>Seq</code> of futures are triggered serially (as opposed to in parallel) ?</p>