The util.promisify() method defines in utilities module of Node.js standard library. It is basically used to convert a method that returns responses using a callback function to return responses in a promise object. Usually, very soon it becomes very difficult to work with callbacks due to callback nesting or callback hells. It becomes very difficult to organize or format our code so that other developers if working with that code, can understand it easily. In other side, it is very easy to deal with promises as nesting promises are also operate in linear style i.e. promise chaining. The util.promisify() method does this for us and makes the method to operate with promises.
Syntax:
util.promisify(func)
Parameters: This method accepts a single parameter func that holds the callback based function.
Return Value: This method returns a promise based function.
Example 1:
const util = require( 'util' )
const fs = require( 'fs' )
const readdir = util.promisify(fs.readdir)
readdir( 'process.cwd()' )
.then(files => {
console.log(files)
})
. catch (err => {
console.log(err)
})
|
Output:
[Error: ENOENT: no such file or directory,
scandir 'C:\Users\bhudk\Desktop\nodec\process.cwd()'] {
errno: -4058,
code: 'ENOENT',
syscall: 'scandir',
path: 'C:\\Users\\bhudk\\Desktop\\nodec\\process.cwd()'
}
Example 2:
const util = require( 'util' )
const fs = require( 'fs' )
const readdir = util.promisify(fs.readdir)
const readFiles = async (path) => {
const files = await readdir(path)
console.log(files)
}
readFiles(process.cwd()). catch (err => {
console.log(err)
})
|
Output:

Example 3:
const util = require( 'util' )
importing File System module
const fs = require( 'fs' )
const readdir = util.promisify(fs.readdir)
const lstat = util.promisify(fs.lstat)
const readFiles = async (path) => {
const files = await readdir(path)
for (let file of files) {
const stats = await lstat(file)
if (stats.isFile()) {
console.log(`${file} -----> File`)
} else {
console.log(`${file} -----> Folder`)
}
}
}
readFiles( 'process.cwd()' ). catch (err => {
console.log(err)
})
|
Output:

Reference: https://nodejs.org/api/util.html#util_util_promisify_original