code: def next(self):
          '''receive next data (block until next data)'''
          try:
              raw_msg = self._socket.recv()
          except KeyboardInterrupt:
              raise StopIteration()
          msg, topic_name = self._strip_topic_name_if_not_wildcard(raw_msg)
          if msg is None:
              return self.next()
          if self._user_callback_takes_topic_name:
              return (self.deserialize(msg), topic_name)
          else:
              return self.deserialize(msgf next(self):
          '''receive next data (block until next data)'''
          try:
              raw_msg = self._socket.recv()
          except KeyboardInterrupt:
              raise StopIteration()
          msg, topic_name = self._strip_topic_name_if_not_wildcard(raw_msg)
          if msg is None:
              return self.next()
          if self._user_callback_takes_topic_name:
              return (self.deserialize(msg), topic_name)
          else:
              return self.deserialize(msg)
docs: receive next data (block until next data)