title: Nested Single.flatMap in RxJava vs Single.zip, are the same?
body: <p>I'm facing a confusion, giving by example 4 Single:</p>
  
  <pre class="lang-java prettyprint-override"><code>val s1 : Single&lt;String&gt; = service1.execute().subscribeOn(io())
  val s2 : Single&lt;Int&gt; = service2.execute().subscribeOn(io())
  val s3 : Single&lt;Int&gt; = service3.execute().subscribeOn(io())
  val s4 : Single&lt;String&gt; = service4.execute().subscribeOn(io())
  val ....
  val s10 : Single&lt;Int&gt; = service10.execute().subscribeOn(io())
  </code></pre>
  
  <p>data class MyObj (
    field1: String,
    field2: Int,
    field3: Int,
    field4: String...
    .... 
    field10: Int 
  )</p>
  
  <p>and I have a <code>service10.execute(s1 : String s2 : Int s3 : Int s4 : String)</code> </p>
  
  <p>If I do:</p>
  
  <pre class="lang-java prettyprint-override"><code>s1.flatMap { str -&gt; 
      s2.flatMap { int1 -&gt;
          s3.flatMap { int2 -&gt;
              s4.flatMap { str2 -&gt;
                  ...
                  s10.flatmap { int10
                    service10.execute(myObj(str, int1, int2, str2..., int10))
                  }
              }
          }
      }
  }
  </code></pre>
  
  <p>Is the same as doing:</p>
  
  <pre class="lang-java prettyprint-override"><code>Single.zip(
              listOf(
                  s1,
                  s2,
                  s3,
                  s4
                ...,
                ...,
                s10
              )
          ) { array -&gt;
              val str = array[0] as String
              val int1 = array[1] as Int
              val int2 = array[2] as Int
              val str2 = array[3] as String
              ...
              val str10 = array[9] as Int
          }
  </code></pre>
  
  <p>1) Is the flatMap executing there in parallel o sequentially there? 
  2) If the nested flatMap are sequential, is there a way to make them parallel like the zip?</p>