# Buggy code
def convert(self, names, type_="entities", filter_matches=False):
    """Return a list of converted Alexa devices based on names.

    Names may be matched either by serialNumber, accountName, or
    Homeassistant entity_id and can return any of the above plus entities

    Parameters
    ----------
    names : list(string)
        A list of names to convert
    type : string
        The type to return entities, entity_ids, serialnumbers, names
    filter_matches : bool
        Whether non-matching items are removed from the returned list.

    Returns
    -------
    list(string)
        List of home assistant entity_ids

    """
    devices = []
    if isinstance(names, str):
        names = [names]
    for item in names:
        matched = False
        for alexa in self.devices:
            _LOGGER.debug(
                "Testing item: %s against (%s, %s, %s, %s)",
                item,
                alexa,
                alexa.name,
                hide_serial(alexa.unique_id),
                alexa.entity_id,
            )
            if item in (alexa, alexa.name, alexa.unique_id, alexa.entity_id):
                if type_ == "entities":
                    converted = alexa
                elif type_ == "serialnumbers":
                    converted = alexa.unique_id
                elif type_ == "names":
                    converted = alexa.name
                elif type_ == "entity_ids":
                    converted = alexa.entity_id
                devices.append(converted)
                matched = True
                _LOGGER.debug("Converting: %s to (%s): %s", item, type_, converted)
        if not filter_matches and not matched:
            devices.append(item)
    return devices


# Traceback (RuntimeError)
2020-06-21 12:36:29 ERROR (MainThread) [alexapy.helpers] alexaapi.get_state((<alexapy.alexaapi.AlexaAPI object at 0xa8cddbd0>,), {}): An error occured accessing AlexaAPI: An exception of type RuntimeError occurred. Arguments:
('Session is closed',)
2020-06-21 12:36:29 ERROR (MainThread) [homeassistant.util.logging] Exception in _handle_event when dispatching 'alexa_media_a******e@g*******m': ({'player_state': {'destinationUserId': 'XXX', 'dopplerId': {'deviceType': 'AB72C64C86AW2', 'deviceSerialNumber': 'XXX'}, 'audioPlayerState': 'PLAYING', 'quality': None, 'error': False, 'errorMessage': None, 'mediaReferenceId': '78e56ac3-4ab4-4c85-86b4-3d9bb3f5ae60:6'}},)
Traceback (most recent call last):
File "/config/custom_components/alexa_media/media_player.py", line 369, in _handle_event
await self.async_update()
File "/config/custom_components/alexa_media/helpers.py", line 148, in wrapper
result = await func(*args, **kwargs)
File "/config/custom_components/alexa_media/media_player.py", line 802, in async_update
device, no_throttle=True
File "/config/custom_components/alexa_media/helpers.py", line 148, in wrapper
result = await func(*args, **kwargs)
File "/config/custom_components/alexa_media/media_player.py", line 545, in refresh
session = await self.alexa_api.get_state()
File "/usr/local/lib/python3.7/site-packages/alexapy/helpers.py", line 69, in wrapper
return await func(*args, **kwargs)
File "/usr/local/lib/python3.7/site-packages/alexapy/alexaapi.py", line 761, in get_state
+ "&amp;screenWidth=2560"
File "/usr/local/lib/python3.7/site-packages/alexapy/alexaapi.py", line 122, in _get_request
return await self._request("get", uri, data)
File "/usr/local/lib/python3.7/site-packages/backoff/_async.py", line 133, in retry
ret = await target(*args, **kwargs)
File "/usr/local/lib/python3.7/site-packages/alexapy/alexaapi.py", line 93, in _request
ssl=self._login._ssl,
File "/usr/local/lib/python3.7/site-packages/alexapy/aiohttp/client.py", line 377, in _request
raise RuntimeError("Session is closed")
RuntimeError: Session is closed

# Fixed code
def convert(self, names, type_="entities", filter_matches=False):
    """Return a list of converted Alexa devices based on names.

    Names may be matched either by serialNumber, accountName, or
    Homeassistant entity_id and can return any of the above plus entities

    Parameters
    ----------
    names : list(string)
        A list of names to convert
    type_ : string
        The type to return entities, entity_ids, serialnumbers, names
    filter_matches : bool
        Whether non-matching items are removed from the returned list.

    Returns
    -------
    list(string)
        List of home assistant entity_ids

    """
    devices = []
    if isinstance(names, str):
        names = [names]
    for item in names:
        matched = False
        for alexa in self.devices:
            _LOGGER.debug(
                "Testing item: %s against (%s, %s, %s, %s)",
                item,
                alexa,
                alexa.name,
                hide_serial(alexa.unique_id),
                alexa.entity_id,
            )
            if item in (alexa, alexa.name, alexa.unique_id, alexa.entity_id):
                if type_ == "entities":
                    converted = alexa
                elif type_ == "serialnumbers":
                    converted = alexa.unique_id
                elif type_ == "names":
                    converted = alexa.name
                elif type_ == "entity_ids":
                    converted = alexa.entity_id
                devices.append(converted)
                matched = True
                _LOGGER.debug("Converting: %s to (%s): %s", item, type_, converted)
        if not filter_matches and not matched:
            devices.append(item)
    return devices