export class Handler { // tslint:disable-next-line max-line-length public static fromCback(key: string, cback: (obj: T, c: (err: Error, res: R) => void, ...otherParams: any[]) => void): Handler { return new Handler(key, (obj: T, ...rest: any[]) => { return new Promise((resolve, reject) => { try { cback(obj, (err: Error, res: R) => { if (err) { return reject(err); } return resolve(res); }, ...rest); } catch (e) { reject(e); } }); }); } constructor(public key: string, public handle: (obj: T, ...rest: any[]) => Promise) { } }