on master help sign in
fix: make waitForTransactionConfirm correctly throw on unconfirmed
52de816Matt Condon (shrugs)
src/lib/txn.js+9−3
@@ -129,13 +129,19 @@ const sendSignedTransaction = (web3, stx, doubtNonceError) => {
129 });
129 });
130};
130};
131
131
132−// returns a Promise<bool>, where the bool indicates tx success/failure
132+// returns a Promise<void>, throwing on tx failure
133const waitForTransactionConfirm = (web3, txHash) => {
133const waitForTransactionConfirm = (web3, txHash) => {
134 return retry(async (bail, n) => {
134 return retry(async (bail, n) => {
135 const receipt = await web3.eth.getTransactionReceipt(txHash);
135 const receipt = await web3.eth.getTransactionReceipt(txHash);
136 const confirmed = receipt !== null;
136 const confirmed = receipt !== null;
137+ if (!confirmed) {
138+ throw new Error('Transaction not confirmed.');
139+ }
140+
137− if (confirmed) return receipt.status === true;
141+ const success = receipt.status === true;
138− else throw new Error('retrying');
142+ if (!success) {
143+ return bail(new Error('Transaction failed.'));
144+ }
139 }, RETRY_OPTIONS);
145 }, RETRY_OPTIONS);
140};
146};
141
147
src/views/Invite/InviteEmail.js+1−3
@@ -315,9 +315,7 @@ export default function InviteEmail() {
315 tankWasUsed
315 tankWasUsed
316 );
316 );
317
317
318− // TODO: waitForTransactionConfirm never rejects
319− const didConfirm = await waitForTransactionConfirm(_web3, txHash);
318+ await waitForTransactionConfirm(_web3, txHash);
320− if (!didConfirm) throw new Error();
321 } catch (error) {
319 } catch (error) {
322 console.error(error);
320 console.error(error);
323 unsentInvites.push(invite);
321 unsentInvites.push(invite);