Skip to content

Commit

Permalink
mutex
Browse files Browse the repository at this point in the history
  • Loading branch information
estebanmino committed Dec 17, 2020
1 parent ef70593 commit 20b0adb
Show file tree
Hide file tree
Showing 2 changed files with 6 additions and 2 deletions.
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@metamask/controllers",
"version": "5.1.0",
"version": "5.1.2",
"description": "Collection of platform-agnostic modules for creating secure data models for cryptocurrency wallets",
"license": "MIT",
"files": [
Expand Down
6 changes: 5 additions & 1 deletion src/transaction/TransactionController.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ import { addHexPrefix, bufferToHex } from 'ethereumjs-util';
import { ethErrors } from 'eth-rpc-errors';
import BaseController, { BaseConfig, BaseState } from '../BaseController';
import NetworkController from '../network/NetworkController';

import {
BNToHex,
fractionBN,
Expand Down Expand Up @@ -471,6 +470,7 @@ export class TransactionController extends BaseController<TransactionConfig, Tra
* @returns - Promise resolving when this operation completes
*/
async approveTransaction(transactionID: string) {
const releaseLock = await this.mutex.acquire();
const { transactions } = this.state;
const network = this.context.NetworkController as NetworkController;
/* istanbul ignore next */
Expand All @@ -481,9 +481,11 @@ export class TransactionController extends BaseController<TransactionConfig, Tra

if (!this.sign) {
this.failTransaction(transactionMeta, new Error('No sign method defined.'));
releaseLock();
return;
} else if (!currentChainId) {
this.failTransaction(transactionMeta, new Error('No chainId defined.'));
releaseLock();
return;
}

Expand All @@ -505,7 +507,9 @@ export class TransactionController extends BaseController<TransactionConfig, Tra
transactionMeta.status = 'submitted';
this.updateTransaction(transactionMeta);
this.hub.emit(`${transactionMeta.id}:finished`, transactionMeta);
releaseLock();
} catch (error) {
releaseLock();
this.failTransaction(transactionMeta, error);
}
}
Expand Down

0 comments on commit 20b0adb

Please sign in to comment.