Intermediate Node.js Interview QuestionsIntermediatePractical
Node.js · Question 59
What is util.promisify in Node.js?
Direct answer
util.promisify wraps callback-style functions (err, result) into functions returning Promises — bridge legacy fs.readFile and similar APIs to async/await; prefer native fs.promises where available.
Node's early APIs use error-first callbacks — promisify automates the (err, data) → Promise conversion so modern code avoids callback pyramids without rewriting C libraries.
- Signature — promisify(fn) returns async function; last arg must not be user callback.
- Custom promisify — fn[util.promisify.custom] = () => new Promise(...) for odd APIs.
- fs.promises — built-in Promise fs API; promisify legacy fs.readFile only when needed.
- promisify vs promisify.setImmediate — rare; default uses microtask/Promise resolution.
promisify.mjs
import { promisify } from "node:util";
import fs from "node:fs";
const readFile = promisify(fs.readFile);
async function loadConfig(path) {
const raw = await readFile(path, "utf8");
return JSON.parse(raw);
}
// Preferred today:
// import fs from "node:fs/promises";
// await fs.readFile(path, "utf8");