'Do a request via ``self.make_request`` and parse the JSON response.
:type call: string
:param call: Call name, e.g. ``CreateStack``
:type params: dict
:param params: Dictionary of call parameters
:type path: string
:param path: Server path
:type method: string
:param method: HTTP method to use
:rtype: dict
:return: Parsed JSON response data'

def _do_request(self, call, params, path, method):

    response = self.make_request(call, params, path, method)
    body = response.read().decode('utf-8')
    if (response.status == 200):
        body = json.loads(body)
        return body
    else:
        boto.log.error(('%s    %s' % (response.status, response.reason)))
        boto.log.error(('%s' % body))
        raise self.ResponseError(response.status, response.reason, body=body)
