/** * Returns a promise that resolves after the given duration. * @param ms Milliseconds to delay. * @return A promise resolved after the specified delay. */ export const delay = (ms: number): Promise => new Promise((resolve) => setTimeout(() => resolve(), ms)); type AsyncCallback = (error?: Error | null, result?: R) => void; /** * Wraps a function with an async callback in a promise. * @param fn The function to promisify. */ export const promisified = (fn: (cb: AsyncCallback) => R): Promise => new Promise((resolve, reject) => { fn((err, data) => (err ? reject(err) : resolve(data))); });