import requests


def get_url_json(url, headers=None, params=None, timeout=None):
    """
    URL JSON getter, wrapped in an exponential backoff strategy

    Args:
        url: URL to run requests.get on
        headers: headers to pass to get
        params: params to pass to get
        timeout: Time to wait in seconds until timeout

    Returns:
        resp.json: JSON payload

    Raises:
        RequestException: Any request exception, after backoff complete
    """
    resp = requests.get(url, headers=headers, params=params, timeout=timeout)
    resp.raise_for_status()
    return resp.json()