async def _read(self, num_bytes) -> bytes:
        """
        Reads a given number of bytes

        :param num_bytes: How many bytes to read
        :returns: incoming bytes
        """
        while True:

            if self.in_waiting < num_bytes:
                await asyncio.sleep(self._asyncio_sleep_time)

            else:
                # Try to read bytes
                inbytes = self._serial_instance.read(num_bytes)

                # Just for safety, should never happen
                if not inbytes:
                    await asyncio.sleep(self._asyncio_sleep_time)
                else:
                    return inbytes