code: def doOneListen(self, markAlive=None):
          
          if markAlive is not None:
              self._markAlive = markAlive
          try:
              if self._markAlive:
                  self._ping()
              content = self._pullMessage()
              if content:
                  self._parseMessage(content)
          except KeyboardInterrupt:
              return False
          except requests.Timeout:
              pass
          except requests.ConnectionError:
              # If the client has lost their internet connection, keep trying every 30 seconds
              time.sleep(30)
          except FBchatFacebookError as e:
              # Fix 502 and 503 pull errors
              if e.request_status_code in [502, 503]:
                  self.req_url.change_pull_channel()
                  self.startListening()
              else:
                  raise e
          except Exception as e:
              return self.onListenError(exception=e)
  
          return True
docs: Does one cycle of the listening loop.
          This method is useful if you want to control fbchat from an external event loop
  
          .. warning::
              `markAlive` parameter is deprecated now, use :func:`fbchat.Client.setActiveStatus`
              or `markAlive` parameter in :func:`fbchat.Client.listen` instead.
  
          :return: Whether the loop should keep running
          :rtype: bool