diff --git a/brownie/network/contract.py b/brownie/network/contract.py index eceddeaf3..290238c73 100644 --- a/brownie/network/contract.py +++ b/brownie/network/contract.py @@ -1062,10 +1062,12 @@ def __call__(self, *args: Tuple, block_identifier: Union[int, str, bytes] = None args, tx = _get_tx(self._owner, args) tx.update({"gas_price": 0, "from": self._owner or accounts[0]}) try: - tx = self.transact(*args, tx) - return tx.return_value - finally: - rpc.undo() + self.transact(*args, tx) + except Exception: + pass + + rpc.undo() + return self.call(*args) def _get_tx(owner: Optional[AccountsType], args: Tuple) -> Tuple: