async def nghttpd(self):
        """Initiailize an HTTP/2 server.
        The returned object is an asyncio.subprocess.Process object,
        so async methods must be used with it.
        """
        logging.debug(f"Running nghttpd on :8443")

        # Launch nghttpd and wait for it to start listening.

        proc = await asyncio.create_subprocess_exec(
            "nghttpd", "-v",
            "8443", "ssl/server.key", "ssl/server.crt",
            stdout=asyncio.subprocess.PIPE,
            stderr=asyncio.subprocess.PIPE
        )

        try:
            # Wait up to 3 seconds for nghttpd to start.
            # Otherwise fail.
            started = await asyncio.wait_for(
                self._wait_nghttpd(proc), timeout=3
            )
            if not started:
                raise Exception("nghttpd failed to start on time")
        except asyncio.TimeoutError:
            raise Exception("nghttpd failed to start on time")

        yield proc

        proc.terminate()
        await proc.wait()
Initiailize an HTTP/2 server.
        The returned object is an asyncio.subprocess.Process object,
        so async methods must be used with it.
        
tests/test_impersonate.py