An async middleware seems to sometimes return an empty response
* Koa 2.0.1
* Node 7.7.1
* OSX

This is a tough one to reproduce as it seems to be some sort of timing issue, but I have an async middleware that in a `while` loop uses `http.request` to poll another server. On a certain response, it resolves the middleware back to Koa. It basically looks like this:

server.js (sets up koa and koa-router)
```
  // router is koa-router
  router.post('/api/submit', require('./routes/submit'));

  koaApplication
    .use(router.routes());
```

routes/submit.js (my middleware that does some polling)
```
const STATUS_QUERY_DELAY = 1000;

async function delay(duration = STATUS_QUERY_DELAY) {
  return new Promise((resolve) => {
    setTimeout(() => resolve(), duration);
  });
}

module.exports = async function(ctx, next) {
  var status = 'Pending';
  var attempt = 0;
  var response;

  while(status === 'Pending' && attempt < STATUS_QUERY_ATTEMPTS) {
    await delay();

    // the "request()" function is just a wrapper around http.request() but wraps
    // it in a Promise so that I can "await" it.
    response = await request({ ... });

    status = // get status from response body
    attempt++;
  }

  ctx.set(response.headers);
  ctx.status = response.status;
  ctx.body = response.body;

  console.log(`Responding with ${ctx.status} - ${ctx.body}`);
  await next();
};
```

The final console.log _always_ prints the right information that I expect, however from a client (both curl and Postman) I _sometimes_ get an empty response.

> curl: (52) Empty reply from server

Changing `STATUS_QUERY_DELAY` seems to affect how often this happens, with `1000` being the worst offender (tried 500 and 1500 and the empty responses happen much less frequently, maybe 1 in 20 attempts).

On attempts where the `while` loop makes >1 iteration, it seems more likely to happen, but not always, and curl does wait multiple seconds, then node.js and curl both output at the same time, node with the "Respondng with" console statement, and curl with "Empty reply"

Is there something I am doing wrong here?