Delete an enrolled device.

        :param device_id: unique identifier for the device to be deleted

async def async_delete_device(self, device_id: int) -> None:
        """
        Delete an enrolled device.

        :param device_id: unique identifier for the device to be deleted
        """

        # Lookup device using zone to obtain an accurate index, which is
        # needed to perform the delete command
        device = self._devices[device_id]
        response = await self._protocol.async_execute(
            GetDeviceCommand(device.category, device.group_number, device.unit_number))
        if isinstance(response, DeviceInfoResponse):
            response = await self._protocol.async_execute(
                DeleteDeviceCommand(device.category, response.index))
            if isinstance(response, DeviceDeletedResponse):
                self._devices._delete(device) # pylint: disable=protected-access
                if self._on_device_deleted:
                    try:
                        self._on_device_deleted(self, device)  # pylint: disable=protected-access
                    except Exception: # pylint: disable=broad-except
                        _LOGGER.error(
                            "Unhandled exception in on_device_deleted callback",
                            exc_info=True)
        if isinstance(response, DeviceNotFoundResponse):
            raise ValueError("Device to be deleted was not found")