Perform a WVA web services request and return the decoded value if successful

        :param method: The HTTP method to use when making this request
        :param uri: The path past /ws to request.  That is, the path requested for
            a relpath of `a/b/c` would be `/ws/a/b/c`.
        :raises WVAHttpError: if a response is received but the success is non-success
        :raises WVAHttpSocketError: if there was an error making the HTTP request.  That is,
            the request was unable to make it to the WVA for some reason.
        :return: If the response content type is JSON, it will be deserialized and a
            python dictionary containing the information from the json document will
            be returned.  If not a JSON response, a unicode string of the response
            text will be returned.

def request(self, method, uri, **kwargs):
        """Perform a WVA web services request and return the decoded value if successful

        :param method: The HTTP method to use when making this request
        :param uri: The path past /ws to request.  That is, the path requested for
            a relpath of `a/b/c` would be `/ws/a/b/c`.
        :raises WVAHttpError: if a response is received but the success is non-success
        :raises WVAHttpSocketError: if there was an error making the HTTP request.  That is,
            the request was unable to make it to the WVA for some reason.
        :return: If the response content type is JSON, it will be deserialized and a
            python dictionary containing the information from the json document will
            be returned.  If not a JSON response, a unicode string of the response
            text will be returned.
        """
        response = self.raw_request(method, uri, **kwargs)
        if response.status_code != 200:
            exception_class = HTTP_STATUS_EXCEPTION_MAP.get(response.status_code, WVAHttpError)
            raise exception_class(response)

        if response.headers.get("content-type") == "application/json":
            return json.loads(response.text)
        else:
            return response.text