diff --git a/substrate/client/network/src/service/out_events.rs b/substrate/client/network/src/service/out_events.rs
index 8f9c138095f9a01b27c766b508e1ef7e48198b42..2d4d7ded213e57578daf2433ec48c9e009470bb5 100644
--- a/substrate/client/network/src/service/out_events.rs
+++ b/substrate/client/network/src/service/out_events.rs
@@ -97,10 +97,10 @@ impl Stream for Receiver {
 	fn poll_next(mut self: Pin<&mut Self>, cx: &mut Context) -> Poll<Option<Event>> {
 		if let Some(ev) = ready!(Pin::new(&mut self.inner).poll_next(cx)) {
 			let metrics = self.metrics.lock().clone();
-			if let Some(Some(metrics)) = metrics.as_ref().map(|m| &**m) {
-				metrics.event_out(&ev, self.name);
-			} else {
-				log::warn!("Inconsistency in out_events: event happened before sender associated");
+			match metrics.as_ref().map(|m| m.as_ref()) {
+				Some(Some(metrics)) => metrics.event_out(&ev, self.name),
+				Some(None) => (),	// no registry
+				None => log::warn!("Inconsistency in out_events: event happened before sender associated"),
 			}
 			Poll::Ready(Some(ev))
 		} else {