code: def global_request(self, kind, data=None, wait=True):
          if wait:
              self.completion_event = threading.Event()
          m = Message()
          m.add_byte(cMSG_GLOBAL_REQUEST)
          m.add_string(kind)
          m.add_boolean(wait)
          if data is not None:
              m.add(*data)
          self._log(DEBUG, 'Sending global request "%s"' % kind)
          self._send_user_message(m)
          if not wait:
              return None
          while True:
              self.completion_event.wait(0.1)
              if not self.active:
                  return None
              if self.completion_event.isSet():
                  break
          return self.global_response