in src/common-core/promise_utils.ts [199:231]
export function doubleValueCallbackToPromise<TResult1, TResult2, TPromiseResult>(
callBackOperation: (callback: DoubleValueCallback<TResult1, TResult2>) => void,
packResults: (result1: TResult1, result2: TResult2) => TPromiseResult): Promise<TPromiseResult>;
export function doubleValueCallbackToPromise<TResult1, TResult2, TPromiseResult>(
callBackOperation: (callback: DoubleValueCallback<TResult1, TResult2>) => void,
packResults: (result1: TResult1, result2: TResult2) => TPromiseResult,
userCallback?: DoubleValueCallback<TResult1, TResult2>): Promise<TPromiseResult> | void {
if (userCallback) {
if (!(typeof userCallback === 'function')) {
throw new TypeError('Callback has to be a Function');
}
return callBackOperation(userCallback);
}
return new Promise<TPromiseResult>((resolve, reject) => {
try {
callBackOperation((result1, result2) => {
if (result1 instanceof Error) {
reject(result1);
}
if (result2 instanceof Error) {
reject(result2);
}
return resolve(packResults(result1, result2));
});
} catch (error) {
reject(error);
}
});
}