async def METHOD_NAME(self, dgrams, maxsize, timeout):
    read_dgrams = []
    dgrams_to_find = dgrams.copy()
    while len(dgrams_to_find) != 0:
        try:
            dgram = await asyncio.wait_for(self._datagram_server.read_dgram(maxsize), timeout=timeout)
        except (asyncio.TimeoutError) as err:
            raise Exception("Could not find all datagrams. Remaining dgrams to find: {} Lines found: {}".format(len(dgrams_to_find), len(read_dgrams))) from err
        dgram = dgram.decode("utf-8")
        read_dgrams.append(dgram)
        _list_remove_partially_matching_element(dgrams_to_find, dgram)
    return read_dgrams