async def METHOD_NAME(self) -> CanMessage:
    """Read a message.
    Returns:
        A can message
    Raises:
        CANBusBusError
    """
    m: Message = await self._reader.get_message()
    if m.is_error_frame:
        log.error("Error frame encountered")
        raise CANBusBusError(
            message="Error frame encountered", detail={"frame": repr(m)}
        )
    return CanMessage(
        arbitration_id=ArbitrationId(id=m.arbitration_id), data=m.data
    )