code: def start(self, async_=False):
          
          if not self._running:
              self._connect()
              self.authenticate()
          if async_:
              t = threading.Thread(name=self.description, target=self._read_loop)
              t.daemon = False
              t.start()
          else:
              self._read_loop()
docs: Starts read loop, new thread if async and
          connects/authenticates if not already running.
  
          :param async_: If True new thread is started