diff --git a/ethers/providers/jsonrpc/subscriptions.nim b/ethers/providers/jsonrpc/subscriptions.nim index a7f8855..2bba4d2 100644 --- a/ethers/providers/jsonrpc/subscriptions.nim +++ b/ethers/providers/jsonrpc/subscriptions.nim @@ -144,11 +144,12 @@ method subscribeBlocks(subscriptions: WebSocketSubscriptions, let res = Block.fromJson(arguments{"result"}).mapFailure(SubscriptionError) onBlock(res) - withLock(subscriptions): - convertErrorsToSubscriptionError: - let id = await subscriptions.client.eth_subscribe("newHeads") - subscriptions.callbacks[id] = callback - return id + try: + withLock(subscriptions): + convertErrorsToSubscriptionError: + let id = await subscriptions.client.eth_subscribe("newHeads") + subscriptions.callbacks[id] = callback + return id except AsyncLockError as e: error "Lock error when trying to subscribe to blocks", err = e.msg raise newException(SubscriptionError, "Cannot subscribe to the blocks because of lock error")