from typing import Callable
from typing import Tuple
from typing import List
import re


def parse_multi_header(parse_fn: Callable, data: str) -> Tuple[List, str]:
    """ Parse a header that can have multiple values in comma-separated times within the same header line.
    """
    values = []
    header, data = parse_fn(data)
    values.append(header)

    if data:
        while True:
            m = re.match(r"^\s*,\s*", data)
            if not m:
                break

            header, data = parse_fn(data[m.end() :])
            values.append(header)

    return values, data