diff --git a/js/misc/util.js b/js/misc/util.js
index fb936c9..d22cbf8 100644
--- a/js/misc/util.js
+++ b/js/misc/util.js
@@ -81,10 +81,12 @@ function spawnCommandLine(command_line) {
 function trySpawn(argv)
 {
     var success, pid;
+    var process;
+
     try {
-        [success, pid] = GLib.spawn_async(null, argv, null,
-                                          GLib.SpawnFlags.SEARCH_PATH | GLib.SpawnFlags.DO_NOT_REAP_CHILD,
-                                          null);
+        process = Gio.Subprocess.new_argv(argv,
+                                          Gio.SubprocessStreamDisposition.INHERIT,
+                                          Gio.SubprocessStreamDisposition.INHERIT)
     } catch (err) {
         /* Rewrite the error in case of ENOENT */
         if (err.matches(GLib.SpawnError, GLib.SpawnError.NOENT)) {
@@ -103,10 +105,6 @@ function trySpawn(argv)
             throw err;
         }
     }
-    // Dummy child watch; we don't want to double-fork internally
-    // because then we lose the parent-child relationship, which
-    // can break polkit.  See https://bugzilla.redhat.com//show_bug.cgi?id=819275
-    GLib.child_watch_add(GLib.PRIORITY_DEFAULT, pid, function () {}, null);
 }
 
 // trySpawnCommandLine:
