// Created on savesnippets.com · https://savesnippets.com/8nUZdi8QgsYxUg type NodeCallback = (err: Error | null, result?: T) => void; export function promisify( fn: (...args: [...Args, NodeCallback]) => void, ): (...args: Args) => Promise { return (...args) => new Promise((resolve, reject) => { fn(...args, (err, result) => { if (err) reject(err); else resolve(result as T); }); }); } // Example: fs.readFile (callback) → promise import * as fs from 'node:fs'; const readFileP = promisify<[string, string], string>(fs.readFile); const text = await readFileP('package.json', 'utf8');