def download_comments(comments_url: str, request: dict, args: dict) -> list:
    """

    Recursively download comments from a given GitHub URL

    :param comments_url: GitHub URL containing comments
    :param request: HTTP request parameters (headers, token, etc)
    :param args: arguments passed on the command line + session
    :return: list of strings containing comments

    Using data in request connect and session in args['session'] connect to comments_url and download its content. Based
    on GH documentation the content is a JSON which will be processed and the text of each comment will be saved to ret.

    If there is 'Link' HTTP header containing the word 'next' then recursively follow the URL associated with the header
    and use this URL as new comments_url.
    """

    ret = []

    response = args['session'].get(comments_url, headers=request['headers'])
    if 'link' in response.headers:
        links = response.headers['link'].split(',')
        links = {x.split("rel=")[1].strip('"'): x.split(';')[0].strip('<').strip('>') for x in links}

        if 'next' in links:
            ret += download_comments(links['next'], request, args)

    for comment in response.json():
        ret += [comment['body']]

    return ret