import requests


def submit_request(url: str, token: str, query: str) -> requests.Response:
    """Post a query to an API access point, along with an authentication token.

    Retry with a progressive timeout window.
    """
    MAX_REQUESTS = 3
    TIMEOUT_INCREMENT = 5

    response = None
    req_count = 1
    while (not response):
        try:
            response = requests.get(
                url,
                params={"v": "3", "t": token, "q": query},
                headers={"user-agent": "Java"},
                timeout=req_count * TIMEOUT_INCREMENT,
            )
        except requests.exceptions.Timeout:
            if req_count >= MAX_REQUESTS:
                raise
            else:
                print("Request Timeout, re-sending...")
                req_count += 1

    return response