async def METHOD_NAME(self, server_process):
    server_process.send_signal(signal.SIGTERM)
    await anyio.sleep(0.001)  # some time needed for the recursive signal handler
    server_process.send_signal(signal.SIGTERM)
    with anyio.fail_after(SHUTDOWN_TIMEOUT):
        await server_process.wait()
    server_process.out.seek(0)
    out = server_process.out.read().decode()
    assert (
        # either the main PID is still waiting for shutdown, so forwards the SIGKILL
        "Sending SIGKILL" in out
        # or SIGKILL came too late, and the main PID is already closing
        or "KeyboardInterrupt" in out
        or "Server stopped!" in out
    ), (
        "When sending two SIGTERM shortly after each other, the main process should"
        " first send a SIGTERM and then a SIGKILL to the uvicorn subprocess."
        f" Output:\n{out}"
    )