title: why coroutines 1st run on caller thread but after first suspension point it runs on DefaultExecutor in “Dispatchers.Unconfined”?
body: <p>Below code prints </p>
  
  <pre><code>import kotlinx.coroutines.*
  
      fun main() = runBlocking&lt;Unit&gt; {
          launch(Dispatchers.Unconfined) {
              // not confined -- will work with main thread
              println("thread ${Thread.currentThread().name}")
              delay(500)
              println("thread ${Thread.currentThread().name}")
          }
      }
  </code></pre>
  
  <p>1st run on caller thread but after first suspension point it runs on DefaultExecutor in “Dispatchers.Unconfined”</p>
  
  <pre><code> thread main
   thread kotlinx.coroutines.DefaultExecutor
  </code></pre>