title: Coroutine await() function not waiting till it's job done
body: <p>I had a code that looks like below</p>
  <pre><code>fun main() {
      viewModelScope.launch {
          doA()
          //call api with Flow as the return type
      }
  }
  suspend fun doA() {
      viewModelScope.async { doB() }.await()
  }
  suspend fun doB() {
      //Do logic here, eventually will call line below
      viewModelScope.launch { doC() }
  }
  suspend fun doC() {
      //call api with Flow as the return type
  }
  </code></pre>
  <p>What I want to achieve here is to make the <code>doA()</code> wait till it's done and after that continue to the function below it, which is the call API function. But when I try to run, the <code>doA()</code> not wait until everything finishes on that side. The debug quite help me and I found that when the <code>doB()</code> being run and reach the <code>doC()</code> which in the new scope, the program continues to the next line after the <code>doA()</code> in <code>main()</code>.</p>
  <p>Is there's something I missing? Why the code doesn't work like what I want? I kind a new in Coroutine to say. And yes, I run the code in the Android environment. Thanks for helping</p>