From 86194c61457f2e2e534cd05071bde9633e205ad3 Mon Sep 17 00:00:00 2001 From: Sebastian Date: Mon, 12 Feb 2024 15:54:49 -0300 Subject: add more info when wallet-core is not available --- packages/taler-wallet-core/src/util/promiseUtils.ts | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) (limited to 'packages/taler-wallet-core/src/util/promiseUtils.ts') diff --git a/packages/taler-wallet-core/src/util/promiseUtils.ts b/packages/taler-wallet-core/src/util/promiseUtils.ts index df4cc343b..d152a12f4 100644 --- a/packages/taler-wallet-core/src/util/promiseUtils.ts +++ b/packages/taler-wallet-core/src/util/promiseUtils.ts @@ -23,6 +23,7 @@ export interface OpenedPromise { promise: Promise; resolve: (val: T) => void; reject: (err: any) => void; + lastError?: any; } /** @@ -33,16 +34,22 @@ export interface OpenedPromise { */ export function openPromise(): OpenedPromise { let resolve: ((x?: any) => void) | null = null; - let reject: ((reason?: any) => void) | null = null; + let promiseReject: ((reason?: any) => void) | null = null; const promise = new Promise((res, rej) => { resolve = res; - reject = rej; + promiseReject = rej; }); - if (!(resolve && reject)) { + if (!(resolve && promiseReject)) { // Never happens, unless JS implementation is broken - throw Error(); + throw Error("JS implementation is broken"); } - return { resolve, reject, promise }; + const result: OpenedPromise = { resolve, reject: promiseReject, promise }; + function saveLastError(reason?: any) { + result.lastError = reason; + promiseReject!(reason); + } + result.reject = saveLastError; + return result; } export class AsyncCondition { -- cgit v1.2.3