From 5a42cadefee84c467eace3581a6bb05fcdc4311f Mon Sep 17 00:00:00 2001 From: Michael Vines Date: Tue, 23 Oct 2018 08:35:20 -0700 Subject: [PATCH] fix: fail faster on transaction errors --- web3.js/src/util/send-and-confirm-transaction.js | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/web3.js/src/util/send-and-confirm-transaction.js b/web3.js/src/util/send-and-confirm-transaction.js index 72a1ebd2c3..c54d873f65 100644 --- a/web3.js/src/util/send-and-confirm-transaction.js +++ b/web3.js/src/util/send-and-confirm-transaction.js @@ -22,8 +22,19 @@ export async function sendAndConfirmTransaction( let i = 4; for (;;) { const status = await connection.getSignatureStatus(signature); - if (status == 'Confirmed') return; - if (runtimeErrorOk && status == 'ProgramRuntimeError') return; + switch (status) { + case 'Confirmed': + return; + case 'ProgramRuntimeError': + if (runtimeErrorOk) return; + //fall through + case 'GenericError': + default: + throw new Error(`Transaction ${signature} failed (${status})`); + case 'SignatureNotFound': + break; + } + await sleep(500); if (--i < 0) { const duration = (Date.now() - start) / 1000;