@@ -2,6 +2,7 @@ import * as ob from 'urbit-ob';
2import { Just } from 'folktale/maybe';
2import { Just } from 'folktale/maybe';
3import Tx from 'ethereumjs-tx';
3import Tx from 'ethereumjs-tx';
4import { toWei, fromWei, toHex } from 'web3-utils';
4import { toWei, fromWei, toHex } from 'web3-utils';
5+import * as retry from 'async-retry';
6import { BRIDGE_ERROR } from './error';
7import { BRIDGE_ERROR } from './error';
7import { NETWORK_TYPES } from './network';
8import { NETWORK_TYPES } from './network';
@@ -12,6 +13,13 @@ import { WALLET_TYPES, addHexPrefix } from './wallet';
12const CHECK_BLOCK_EVERY_MS =
13const CHECK_BLOCK_EVERY_MS =
13 process.env.NODE_ENV === 'development' ? 1000 : 5000;
14 process.env.NODE_ENV === 'development' ? 1000 : 5000;
16+const RETRY_OPTIONS = {
19+ minTimeout: CHECK_BLOCK_EVERY_MS,
15const TXN_PURPOSE = {
23const TXN_PURPOSE = {
16 SET_MANAGEMENT_PROXY: Symbol('SET_MANAGEMENT_PROXY'),
24 SET_MANAGEMENT_PROXY: Symbol('SET_MANAGEMENT_PROXY'),
17 SET_TRANSFER_PROXY: Symbol('SET_TRANSFER_PROXY'),
25 SET_TRANSFER_PROXY: Symbol('SET_TRANSFER_PROXY'),
@@ -178,17 +186,12 @@ const sendSignedTransaction = (web3, stx, doubtNonceError) => {
179// returns a Promise<bool>, where the bool indicates tx success/failure
187// returns a Promise<bool>, where the bool indicates tx success/failure
180const waitForTransactionConfirm = (web3, txHash) => {
188const waitForTransactionConfirm = (web3, txHash) => {
181− return new Promise((resolve, reject) => {
189+ return retry(async (bail, n) => {
182− const checkForConfirm = async () => {
183− console.log('checking for confirm', txHash);
184− const receipt = await web3.eth.getTransactionReceipt(txHash);
190+ const receipt = await web3.eth.getTransactionReceipt(txHash);
185− console.log('tried, got', receipt);
186− let confirmed = receipt !== null;
191+ let confirmed = receipt !== null;
187− if (confirmed) resolve(receipt.status === true);
192+ if (confirmed) return receipt.status === true;
188− else setTimeout(checkForConfirm, CHECK_BLOCK_EVERY_MS);
193+ else throw new Error('retrying');
189− };
194+ }, RETRY_OPTIONS);
194const sendAndAwaitAll = async (web3, stxs, doubtNonceError) => {
197const sendAndAwaitAll = async (web3, stxs, doubtNonceError) => {
@@ -234,6 +237,7 @@ const canDecodePatp = p => {
237 signTransaction,
241 signTransaction,
238 sendSignedTransaction,
242 sendSignedTransaction,
239 waitForTransactionConfirm,
243 waitForTransactionConfirm,