--- a/libnm-glib/nm-remote-settings.c
+++ b/libnm-glib/nm-remote-settings.c
@@ -511,6 +511,9 @@
 	priv->init_left--;
 	if (priv->init_left == 0)
 		g_signal_emit (self, signals[CONNECTIONS_READ], 0);
+
+	/* See new_connection_cb() */
+	g_object_unref (self);
 }
 
 static NMRemoteConnection *
@@ -531,9 +534,10 @@
 	/* Create a new connection object for it */
 	connection = nm_remote_connection_new (priv->bus, path);
 	if (connection) {
+		/* The self reference will be removed in connection_inited() */
 		g_async_initable_init_async (G_ASYNC_INITABLE (connection),
 		                             G_PRIORITY_DEFAULT, NULL,
-		                             connection_inited, self);
+		                             connection_inited, g_object_ref (self));
 
 		/* Add the connection to the pending table to wait for it to retrieve
 		 * it's settings asynchronously over D-Bus.  The connection isn't