code: def __sub_make_request(self, foc, gpid, callback):
          
          # global
          if isinstance(gpid, string_types):
              gpid = uuid_to_hex(gpid)
              ref = (foc, gpid)
              with self.__sub_add_reference(ref):
                  req = self._client._request_sub_create(self.__lid, foc, gpid, callback=callback)
          # local
          elif isinstance(gpid, Sequence) and len(gpid) == 2:
              ref = (foc, tuple(gpid))
              with self.__sub_add_reference(ref):
                  req = self._client._request_sub_create_local(self.__lid, foc, *gpid, callback=callback)
          else:
              raise ValueError('gpid must be string or two-element tuple')
  
          req._run_on_completion(self.__sub_del_reference, ref)
          return req
docs: Make right subscription request depending on whether local or global - used by __sub*