Unexpected behaviour with async functions
Hello!

When I send request, my log is
```
1
2
3
4
```
but a response is `Not Found`. I expect `Hello Koa` response. Why does it happen?

```js
const Koa = require('koa') // v2.2.0

let app = new Koa()

app
  .use(async function (ctx, next) {
    console.log(1)
    await sleep(1e3)
    console.log(2)
    next()
  })
  .use(async function (ctx) {
    console.log(3)
    await sleep(1e3)
    console.log(4)
    ctx.body = 'Hello Koa'
  })


function sleep(ms) {
  return new Promise(resolve => setTimeout(resolve, ms))
}

app.listen(3000)
```