fetch resource using the asynchronous AsyncHTTPClient
    :param request: HTTPRequest object or a url
    :param method: HTTP method in string format, e.g. GET, POST
    :param callback: callback function on the result. it is used
    by the coroutine decorator.
    :param kwargs: query string entities or POST data

def async_fetch(request, method, default_headers=None,
                callback=None, httpclient=None, **kwargs):
    """
    fetch resource using the asynchronous AsyncHTTPClient
    :param request: HTTPRequest object or a url
    :param method: HTTP method in string format, e.g. GET, POST
    :param callback: callback function on the result. it is used
    by the coroutine decorator.
    :param kwargs: query string entities or POST data
    """
    updated_request = make_request(request, method, default_headers, **kwargs)
    if not httpclient:
        httpclient = AsyncHTTPClient()
    rsp = yield httpclient.fetch(updated_request)
    raise Return(parse_response(rsp))