title: nodejs(koa):Can't set headers after they are sent
body: <p>I have a program which want to  map <code>/a/b/c.js</code> url => <code>/a:b:c.js</code> file;</p>
  
  <p><code>
  koa version:2.3.0
  koa static version: 4.0.1
  </code></p>
  
  <p>minimal reproduction</p>
  
  <pre><code>const KOA = require('koa');
  const koaStatic = require('koa-static');
  
  staticApp = new KOA()
  staticApp.use((ctx, next) =&gt; {
    let path = ctx.path.split('/');
    path = path.filter(segment =&gt; segment)
    ctx.path = `/${path.join(':')}`;
    next()
  })
  staticApp.use(koaStatic(__dirname))
  staticApp.listen(8888);
  </code></pre>
  
  <p>Assume current directory have a file <code>a:b:c.js</code>, 
  when I access to <code>locahost:8888\a\b\c.js</code> in browser, 
  program always get error 
  <code>UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 4): Error: Can't set headers after they are sent.</code></p>
  
  <p>thanks for you help!</p>