diff --git a/src/universe.cpp b/src/universe.cpp
index d333395b9ade22867ef14451f2d8dda67cbc9362..6189d4e1b1c703b883012351de43706426da5d1f 100644
--- a/src/universe.cpp
+++ b/src/universe.cpp
@@ -278,7 +278,9 @@ void Universe::unbind(const std::string &name) {
 
 int Universe::waitConnections() {
 	SHARED_LOCK(net_mutex_, lk);
-	return std::count_if(peers_.begin(), peers_.end(), [](const auto &p) {
+	auto peers = peers_;
+	lk.unlock();
+	return std::count_if(peers.begin(), peers.end(), [](const auto &p) {
 		return p && p->waitConnection();
 	});
 }
@@ -636,7 +638,7 @@ void Universe::_notifyError(Peer *p, ftl::protocol::Error e, const std::string &
 	const auto ptr = (p) ? _findPeer(p) : nullptr;
 
 	// Note: Net errors can have no peer
-	if (!ptr) return;
+	//if (!ptr) return;
 
 	on_error_.triggerAsync(ptr, e, errstr);
 }