diff --git a/crates/relayer/src/event/bus.rs b/crates/relayer/src/event/bus.rs index c7b750048a..8d55f22af6 100644 --- a/crates/relayer/src/event/bus.rs +++ b/crates/relayer/src/event/bus.rs @@ -29,19 +29,7 @@ impl EventBus { where T: Clone, { - let mut disconnected = Vec::new(); - - for (idx, tx) in self.txs.iter().enumerate() { - // TODO: Avoid cloning when sending to last subscriber - if let Err(channel::SendError(_)) = tx.send(value.clone()) { - disconnected.push(idx); - } - } - - // Remove all disconnected subscribers - for idx in disconnected { - self.txs.remove(idx); - } + self.txs.retain(|tx| tx.send(value.clone()).is_ok()); } }