title: what's the difference of calling a normal function from async function with await a coroutine from an async function?
body: <ol>
  <li>
  <pre><code>async def caller():
      await bar()
      print(&quot;finish&quot;)
  
  async def bar():
     // some code here
  </code></pre>
  </li>
  <li>
  <pre><code>async def caller():
      bar()
      print(&quot;finish&quot;)
  
  def bar():
     //some code here
  </code></pre>
  </li>
  </ol>
  <p>In above example. caller has to wait for the completion of bar() for both cases. Any difference for bar to be a normal / coroutine for this situation? If we want to &quot;await&quot; some functions, why not just use a normal function.</p>