using crypto with koa 2
When I am trying to use node [crypto example](https://nodejs.org/api/crypto.html#crypto_crypto_pbkdf2_password_salt_iterations_keylen_digest_callback) with koa2 context behave like it would be lost

```javascript
router.get('/password', (ctx, next) => {

  const crypto = require('crypto');
  crypto.pbkdf2('secret', 'salt', 100000, 512, 'sha512', (err, key) => {
    if (err) throw err

    const hex = key.toString('hex')

    ctx.status = 200
    ctx.body = hex

    console.log(hex)  // '3745e48...aa39b34'
  })
})
```

I have got error:
```
assert.js:81
 throw new assert.AssertionError({
 ^
 AssertionError: headers have already been sent
 at Object.set status [as status] (/code/node_modules/koa/lib/response.js:82:5)
 at Object.status (/code/node_modules/delegates/index.js:92:31)
 at InternalFieldObject.crypto.pbkdf2 [as ondone] (/code/code/routes.js:13:24)
```

If I wont set `ctx.status = 200` inside `pbkdf2` then I got 404 Not Found default response

Any idea of this behavior?

