Node 8 util.promisfy

Example usage of the util.promisfy function that was introduced in Node 8

June 18, 2017 - 1 minute read -
node

Node 8 added a promisify function to the util core module. A couple of simple usage examples follow.

Usage with a promise

const {promisify} = require('util');
const fs = require('fs');
const readFile = promisify(fs.readFile);
readFile('./foo.txt').then(
fileContents => console.log(fileContents.toString()),
error => console.error(error)
);

Usage with async/await

const {promisify} = require('util');
const fs = require('fs');
const readFile = promisify(fs.readFile);
// await can only be used within an async function
(async () => {
try {
const fileContents = await readFile('./foo.txt');
console.log(fileContents.toString());
} catch (ex) {
ex => console.error(error)
}
})();

Multiple callback arguments

If the callback takes multiple arguments the promise will resolve to an object with a key/value for each argument.

const {promisify} = require('util');
const child = require('child_process');
const exec = promisify(child.exec);
exec('echo "Hello world"').then(
result => console.log(result), // Prints { stdout: 'Hello world\n', stderr: '' }
error => console.error(error)
);