diff --git a/wasm/src/client.rs b/wasm/src/client.rs index 2a24408..054ee0b 100644 --- a/wasm/src/client.rs +++ b/wasm/src/client.rs @@ -76,10 +76,14 @@ fn route_incoming_frame( let Some(message_type) = message_type else { return; }; - for (_, (subscription_type, callback)) in subscriptions.borrow().iter() { - if subscription_type == &message_type { - let _ = callback.call1(&JsValue::NULL, frame); - } + let callbacks: Vec = subscriptions + .borrow() + .iter() + .filter(|(_, (t, _))| t == &message_type) + .map(|(_, (_, cb))| cb.clone()) + .collect(); + for callback in callbacks { + let _ = callback.call1(&JsValue::NULL, frame); } }