title: About async/await in koa2
body: <p>I use <code>async/await</code> in koa2 like following</p>
  
  <pre><code>const Koa = require('koa');
  const app = new Koa();
  
  app.use(async (ctx, next) =&gt; {
    await next()
    console.log("1------&gt;"+Date.now())
  });
  
  app.use(async (ctx, next) =&gt; {
    await next()
    console.log("2------&gt;"+Date.now())
  });
  
  app.use(async (ctx, next) =&gt; {
    await next()
    console.log("3------&gt;"+Date.now())
  });
  
  app.use(async (ctx, next) =&gt; {
    await next()
    console.log("4------&gt;"+Date.now())
  });
  
  app.listen(3000);
  </code></pre>
  
  <p>Run this code, I will get the log like this</p>
  
  <pre><code>4------&gt;1526575713792
  3------&gt;1526575713794
  2------&gt;1526575713795
  1------&gt;1526575713795
  </code></pre>
  
  <p>And here are my questions</p>
  
  <ol>
  <li><p>What's the <code>next</code> in <code>app.use(async (ctx, next)</code>, is it a function?</p></li>
  <li><p><code>await next()</code> in each <code>app.use</code> function means <code>wait, please run the next app.use first</code>, if has no next <code>app.use</code>, ignore it, and run the code in last <code>app.use</code> fuction, am I right?</p></li>
  <li><p>If I change the first one <code>app.use</code> to <code>app.use(async (ctx) =&gt; { console.log("1------&gt;"+Date.now())});</code>, and run it, the result has only one records <code>1------&gt;1526576945380</code>. I thought the second <code>app.use</code> function will continue running, and I will get the result like this</p>
  
  <p>1------>1526576945360</p>
  
  <p>4------>1526575761869</p>
  
  <p>3------>1526575761869</p>
  
  <p>2------>1526575761869</p></li>
  </ol>
  
  <p>So, can anyone help me? and explain for me? Many thanks.</p>