diff --git a/p2p/server_test.go b/p2p/server_test.go
index 7eca46938c09e31d8c9063d950b01d450efa886d..65897e018581c733fc166e494603586d7e3111ab 100644
--- a/p2p/server_test.go
+++ b/p2p/server_test.go
@@ -177,18 +177,25 @@ func TestServerDial(t *testing.T) {
 			if peer := srv.Peers()[0]; peer.Info().Network.Trusted {
 				t.Errorf("peer is trusted prematurely: %v", peer)
 			}
-			srv.AddTrustedPeer(node)
-			if peer := srv.Peers()[0]; !peer.Info().Network.Trusted {
-				t.Errorf("peer is not trusted after AddTrustedPeer: %v", peer)
-			}
-			if peer := srv.Peers()[0]; peer.Inbound() {
-				t.Errorf("peer is marked inbound")
-			}
-			srv.RemoveTrustedPeer(node)
-			if peer := srv.Peers()[0]; peer.Info().Network.Trusted {
-				t.Errorf("peer is trusted after RemoveTrustedPeer: %v", peer)
-			}
+			done := make(chan bool)
+			go func() {
+				srv.AddTrustedPeer(node)
+				if peer := srv.Peers()[0]; !peer.Info().Network.Trusted {
+					t.Errorf("peer is not trusted after AddTrustedPeer: %v", peer)
+				}
+				srv.RemoveTrustedPeer(node)
+				if peer := srv.Peers()[0]; peer.Info().Network.Trusted {
+					t.Errorf("peer is trusted after RemoveTrustedPeer: %v", peer)
+				}
+				done <- true
+			}()
+
+			// Trigger potential race conditions
+			peer = srv.Peers()[0]
+			_ = peer.Inbound()
+			_ = peer.Info()
 
+			<-done
 		case <-time.After(1 * time.Second):
 			t.Error("server did not launch peer within one second")
 		}