Implement promisify(fn)
Node's callback convention, fn(...args, (err, result) => {}), predates promises. Write promisify(fn) that converts a Node-style callback function into one that returns a promise instead.
function readFileCb(path, cb) {
fs.readFile(path, (err, data) => cb(err, data));
}
const readFile = promisify(readFileCb);
const data = await readFile("a.txt"); // rejects if the callback's err is truthy