docs: def MySend1(request_path, payload=None,
  				content_type="application/octet-stream",
  				timeout=None, force_auth=True,
  				**kwargs):
  	"""Sends an RPC and returns the response.
  
  	Args:
  		request_path: The path to send the request to, eg /api/appversion/create.
  		payload: The body of the request, or None to send an empty request.
  		content_type: The Content-Type header to use.
  		timeout: timeout in seconds; default None i.e. no timeout.
  			(Note: for large requests on OS X, the timeout doesn't work right.)
  		kwargs: Any keyword arguments are converted into query string parameters.
  
  	Returns:
  		The response body, as a string.
  	"""
  	# TODO: Don't require authentication.  Let the server say
  	# whether it is necessary.
  	global rpc
  	if rpc == None:
  		rpc = GetRpcServer(upload_options)
  	self = rpc
  	if not self.authenticated and force_auth:
  		self._Authenticate()
  	if request_path is None:
  		return
  	if timeout is None:
  		timeout = 30 # seconds
  
  	old_timeout = socket.getdefaulttimeout()
  	socket.setdefaulttimeout(timeout)
  	try:
  		tries = 0
  		while True:
  			tries += 1
  			args = dict(kwargs)
  			url = "https://%s%s" % (self.host, request_path)
  			if args:
  				url += "?" + urllib.urlencode(args)
  			req = self._CreateRequest(url=url, data=payload)
  			req.add_header("Content-Type", content_type)
  			try:
  				f = self.opener.open(req)
  				response = f.read()
  				f.close()
  				# Translate \r\n into \n, because Rietveld doesn't.
  				response = response.replace('\r\n', '\n')
  				# who knows what urllib will give us
  				if type(response) == unicode:
  					response = response.encode("utf-8")
  				typecheck(response, str)
  				return response
  			except urllib2.HTTPError, e:
  				if tries > 3:
  					raise
  				elif e.code == 401:
  					self._Authenticate()
  				elif e.code == 302:
  					loc = e.info()["location"]
  					if not loc.startswith('https://www.google.com/a') or loc.find('/ServiceLogin') < 0:
  						return ''
  					self._Authenticate()
  				else:
  					raise
  	finally:
  		socket.setdefaulttimeout(old_timeout)