docs: def createStatus(self,
                       repo_user, repo_name, sha, state, target_url=None,
                       context=None, issue=None, description=None):
          """
          :param repo_user: GitHub user or organization
          :param repo_name: Name of the repository
          :param sha: Full sha to create the status for.
          :param state: one of the following 'pending', 'success', 'error'
                        or 'failure'.
          :param target_url: Target url to associate with this status.
          :param description: Short description of the status.
          :param context: Build context
          :return: A deferred with the result from GitHub.
  
          This code comes from txgithub by @tomprince.
          txgithub is based on twisted's webclient agent, which is much less reliable and featureful
          as txrequest (support for proxy, connection pool, keep alive, retry, etc)
          """
          payload = {'state': state}
  
          if description is not None:
              payload['description'] = description
  
          if target_url is not None:
              payload['target_url'] = target_url
  
          if context is not None:
              payload['context'] = context
  
          return self._http.post(
              '/'.join(['/repos', repo_user, repo_name, 'statuses', sha]),
              json=payload)