fix: unsubscribe does not raise

This commit is contained in:
Adam Uhlíř 2024-12-09 16:16:15 +01:00
parent f8f10e2930
commit f8556e3c61
No known key found for this signature in database
GPG Key ID: 1D17A9E81F76155B

View File

@ -76,8 +76,8 @@ method subscribeLogs*(subscriptions: JsonRpcSubscriptions,
method unsubscribe*(subscriptions: JsonRpcSubscriptions, method unsubscribe*(subscriptions: JsonRpcSubscriptions,
id: JsonNode) id: JsonNode)
{.async: (raises: [SubscriptionError, CancelledError]), base.} = {.async: (raises: [CancelledError]), base.} =
raiseAssert "not implemented" raiseAssert "not implemented "
method close*(subscriptions: JsonRpcSubscriptions) {.async: (raises: [SubscriptionError, CancelledError]), base.} = method close*(subscriptions: JsonRpcSubscriptions) {.async: (raises: [SubscriptionError, CancelledError]), base.} =
let ids = toSeq subscriptions.callbacks.keys let ids = toSeq subscriptions.callbacks.keys
@ -144,10 +144,15 @@ method subscribeLogs(subscriptions: WebSocketSubscriptions,
method unsubscribe*(subscriptions: WebSocketSubscriptions, method unsubscribe*(subscriptions: WebSocketSubscriptions,
id: JsonNode) id: JsonNode)
{.async: (raises: [SubscriptionError, CancelledError]).} = {.async: (raises: [CancelledError]).} =
convertErrorsToSubscriptionError: try:
subscriptions.callbacks.del(id) subscriptions.callbacks.del(id)
discard await subscriptions.client.eth_unsubscribe(id) discard await subscriptions.client.eth_unsubscribe(id)
except CancelledError as e:
raise e
except CatchableError:
# Ignore if uninstallation of the subscribiton fails.
discard
# Polling # Polling
@ -295,7 +300,7 @@ method subscribeLogs(subscriptions: PollingSubscriptions,
method unsubscribe*(subscriptions: PollingSubscriptions, method unsubscribe*(subscriptions: PollingSubscriptions,
id: JsonNode) id: JsonNode)
{.async: (raises: [SubscriptionError, CancelledError]).} = {.async: (raises: [CancelledError]).} =
try: try:
subscriptions.logFilters.del(id) subscriptions.logFilters.del(id)
subscriptions.callbacks.del(id) subscriptions.callbacks.del(id)