docs: def on_data(self, raw_data):
          """Called when raw data is received from connection.
  
          Override this method if you wish to manually handle
          the stream data. Return False to stop stream and close connection.
          """
          data = json.loads(raw_data)
  
          if 'in_reply_to_status_id' in data:
              status = Status.parse(self.api, data)
              if self.on_status(status) is False:
                  return False
          elif 'delete' in data:
              delete = data['delete']['status']
              if self.on_delete(delete['id'], delete['user_id']) is False:
                  return False
          elif 'event' in data:
              status = Status.parse(self.api, data)
              if self.on_event(status) is False:
                  return False
          elif 'direct_message' in data:
              status = Status.parse(self.api, data)
              if self.on_direct_message(status) is False:
                  return False
          elif 'friends' in data:
              if self.on_friends(data['friends']) is False:
                  return False
          elif 'limit' in data:
              if self.on_limit(data['limit']['track']) is False:
                  return False
          elif 'disconnect' in data:
              if self.on_disconnect(data['disconnect']) is False:
                  return False
          elif 'warning' in data:
              if self.on_warning(data['warning']) is False:
                  return False
          else:
              logging.error("Unknown message type: " + str(raw_data))