def METHOD_NAME(self):
    for x in self.env:
        os.environ[x] = self.env[x]
    try:
        self._cancel = Gio.Cancellable()
        if IS_WINDOWS:
            # Windows
            sinfo = STARTUPINFO()
            sinfo.dwFlags = STARTF_USESHOWWINDOW
            sinfo.wShowWindow = 0
            cflags = nice_to_priority_class(self.priority)
            self._proc = Popen(
                self.cmdline, stdin=PIPE, stdout=PIPE, stderr=PIPE, startupinfo=sinfo, creationflags=cflags
            )
            self._stdout = WinPopenReader(self._proc.stdout)
            self._check = GLib.timeout_add_seconds(1, self._cb_check_alive)
        elif HAS_SUBPROCESS:
            # New Gio
            flags = Gio.SubprocessFlags.STDOUT_PIPE | Gio.SubprocessFlags.STDERR_MERGE
            if self.priority == 0:
                self._proc = Gio.Subprocess.new(self.cmdline, flags)
            else:
                # I just really do hope that there is no distro w/out nice command
                self._proc = Gio.Subprocess.new(["nice", "-n", "%s" % self.priority] + self.cmdline, flags)
            self._proc.wait_check_async(None, self._cb_finished)
            self._stdout = self._proc.get_stdout_pipe()
        else:
            # Gio < 3.12 - Gio.Subprocess is missing :(
            if self.priority == 0:
                self._proc = Popen(self.cmdline, stdout=PIPE)
            else:
                # still hoping
                self._proc = Popen(["nice", "-n", "%s" % self.priority], stdout=PIPE)
            self._stdout = Gio.UnixInputStream.new(self._proc.stdout.fileno(), False)
            self._check = GLib.timeout_add_seconds(1, self._cb_check_alive)
    except Exception as e:
        # Startup failed
        self.emit("failed", e)
        return
    self._lines = deque([], DaemonProcess.SCROLLBACK_SIZE)
    self._buffer = ""
    self._stdout.read_bytes_async(256, 0, self._cancel, self._cb_read, ())