in src/common-core/promise_utils.ts [263:295]
export function tripleValueCallbackToPromise<TResult1, TResult2, TPromiseResult>(
callbackOperation: (callback: TripleValueCallback<TResult1, TResult2>) => void,
packResults: (result1: TResult1, result2: TResult2) => TPromiseResult,
userCallback: TripleValueCallback<TResult1, TResult2>): void;
export function tripleValueCallbackToPromise<TResult1, TResult2, TPromiseResult>(
callbackOperation: (callback: TripleValueCallback<TResult1, TResult2>) => void,
packResults: (result1: TResult1, result2: TResult2) => TPromiseResult, ): Promise<TPromiseResult>;
export function tripleValueCallbackToPromise<TResult1, TResult2, TPromiseResult>(
callbackOperation: (callback: TripleValueCallback<TResult1, TResult2>) => void,
packResults: (result1: TResult1, result2: TResult2) => TPromiseResult,
userCallback?: TripleValueCallback<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((error, result1, result2) => {
if (error) {
reject(error);
}
resolve(packResults(result1, result2));
});
} catch (error) {
reject(error);
}
});
}