'Gets raw text from the given URI.
Args:
uri (str): The URI to request, not including query parameters
args (dict): A dictionary used to create query strings, defaults to
None.
**Note**: The value of each key is assumed to be an iterable
and *not* a string.
Returns:
Deferred: Succeeds when we get *any* 2xx HTTP response, with the
HTTP body at text.
Raises:
On a non-2xx HTTP response. The response body will be used as the
error message.'

@defer.inlineCallbacks
def get_raw(self, uri, args={}):

    if len(args):
        query_bytes = urllib.urlencode(args, True)
        uri = ('%s?%s' % (uri, query_bytes))
    response = (yield self.request('GET', uri.encode('ascii'), headers=Headers({'User-Agent': [self.user_agent]})))
    body = (yield preserve_context_over_fn(readBody, response))
    if (200 <= response.code < 300):
        defer.returnValue(body)
    else:
        raise CodeMessageException(response.code, body)
