Skip to content
Permalink
Browse files

doc: add mention for using promisify on class methods

Fixes: #30344

PR-URL: #30355
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de>
  • Loading branch information
lundibundi authored and trivikr committed Nov 10, 2019
1 parent c8d00d9 commit 8138e9ce508df75a9bef66dcbb7389bfceb71c23
Showing with 28 additions and 0 deletions.
  1. +28 −0 doc/api/util.md
@@ -862,6 +862,34 @@ will throw an error. If `original` is a function but its last argument is not
an error-first callback, it will still be passed an error-first
callback as its last argument.

Using `promisify()` on class methods or other methods that use `this` may not
work as expected unless handled specially:

```js
const util = require('util');
class Foo {
constructor() {
this.a = 42;
}
bar(callback) {
callback(null, this.a);
}
}
const foo = new Foo();
const naiveBar = util.promisify(foo.bar);
// TypeError: Cannot read property 'a' of undefined
// naiveBar().then(a => console.log(a));
naiveBar.call(foo).then((a) => console.log(a)); // '42'
const bindBar = naiveBar.bind(foo);
bindBar().then((a) => console.log(a)); // '42'
```

### Custom promisified functions

Using the `util.promisify.custom` symbol one can override the return value of

0 comments on commit 8138e9c

Please sign in to comment.
You can’t perform that action at this time.