diff --git a/packages/taler-wallet-core/src/operations/withdraw.ts b/packages/taler-wallet-core/src/operations/withdraw.ts index 368cf3510..a1a39bf32 100644 --- a/packages/taler-wallet-core/src/operations/withdraw.ts +++ b/packages/taler-wallet-core/src/operations/withdraw.ts @@ -982,7 +982,9 @@ enum BankStatusResultCode { export async function processWithdrawalGroup( ws: InternalWalletState, withdrawalGroupId: string, - options: object = {}, + options: { + forceNow?: boolean; + } = {}, ): Promise { logger.trace("processing withdrawal group", withdrawalGroupId); const withdrawalGroup = await ws.db @@ -998,7 +1000,7 @@ export async function processWithdrawalGroup( const retryTag = RetryTags.forWithdrawal(withdrawalGroup); // We're already running! - if (ws.activeLongpoll[retryTag]) { + if (ws.activeLongpoll[retryTag] && !options.forceNow) { logger.info("withdrawal group already in long-polling, returning!"); return { type: OperationAttemptResultType.Longpoll, @@ -1035,8 +1037,9 @@ export async function processWithdrawalGroup( getErrorDetailFromException(e), ); return; + } finally { + delete ws.activeLongpoll[retryTag]; } - delete ws.activeLongpoll[retryTag]; if (!res.ready) { await storeOperationPending(ws, retryTag); }