# Buggy code
def query_region_async(
    self,
    coordinates,
    radius=0.016666666666667,
    collection=None,
    get_query_payload=False,
):
    """
    Queries the CADC for a region around the specified coordinates.

    Parameters
    ----------
    coordinates : str or `astropy.coordinates`.
        coordinates around which to query
    radius : str or `astropy.units.Quantity`.
        the radius of the cone search
    collection: Name of the CADC collection to query, optional
    get_query_payload : bool, optional
        Just return the dict of HTTP request parameters.

    Returns
    -------
    response : `requests.Response`
        The HTTP response returned from the service.
        All async methods should return the raw HTTP response.
    """

    request_payload = self._args_to_payload(
        coordinates=coordinates, radius=radius, collection=collection
    )
    # primarily for debug purposes, but also useful if you want to send
    # someone a URL linking directly to the data
    if get_query_payload:
        return request_payload
    response = self.exec_sync(request_payload["query"])
    return response


# Traceback (HTTPError)
---------------------------------------------------------------------------
HTTPError                                 Traceback (most recent call last)
<ipython-input-68-f4c802433ee1> in <module>
----> 1 cadc.query_region(c, radius=1*u.deg)

~/anaconda3/lib/python3.7/site-packages/astroquery/utils/class_or_instance.py in f(*args, **kwds)
23         def f(*args, **kwds):
24             if obj is not None:
---> 25                 return self.fn(obj, *args, **kwds)
26             else:
27                 return self.fn(cls, *args, **kwds)

~/anaconda3/lib/python3.7/site-packages/astroquery/utils/process_asyncs.py in newmethod(self, *args, **kwargs)
24             verbose = kwargs.pop('verbose', False)
25
---> 26             response = getattr(self, async_method_name)(*args, **kwargs)
27             if kwargs.get('get_query_payload') or kwargs.get('field_help'):
28                 return response

~/anaconda3/lib/python3.7/site-packages/astroquery/utils/class_or_instance.py in f(*args, **kwds)
23         def f(*args, **kwds):
24             if obj is not None:
---> 25                 return self.fn(obj, *args, **kwds)
26             else:
27                 return self.fn(cls, *args, **kwds)

~/anaconda3/lib/python3.7/site-packages/astroquery/cadc/core.py in query_region_async(self, coordinates, radius, collection, get_query_payload)
165         if get_query_payload:
166             return request_payload
--> 167         response = self.run_query(request_payload['query'], operation='sync')
168         return response
169

~/anaconda3/lib/python3.7/site-packages/astroquery/cadc/core.py in run_query(self, query, operation, output_file, output_format, verbose, background, upload_resource, upload_table_name)
346                 dump_to_file=save_to_file,
347                 upload_resource=upload_resource,
--> 348                 upload_table_name=upload_table_name)
349             op = False
350         elif operation == 'async':

~/anaconda3/lib/python3.7/site-packages/astroquery/utils/tap/core.py in launch_job(self, query, name, output_file, output_format, verbose, dump_to_file, upload_resource, upload_table_name)
239             if dump_to_file:
240                 self.__connHandler.dump_to_file(suitableOutputFile, response)
--> 241             raise requests.exceptions.HTTPError(response.reason)
242         else:
243             if verbose:

HTTPError: Bad Request

# Fixed code
def query_region_async(
    self,
    coordinates,
    radius=0.016666666666667 * u.deg,
    collection=None,
    get_query_payload=False,
):
    """
    Queries the CADC for a region around the specified coordinates.

    Parameters
    ----------
    coordinates : str or `astropy.coordinates`.
        coordinates around which to query
    radius : str or `astropy.units.Quantity`.
        the radius of the cone search
    collection: Name of the CADC collection to query, optional
    get_query_payload : bool, optional
        Just return the dict of HTTP request parameters.

    Returns
    -------
    response : `requests.Response`
        The HTTP response returned from the service.
        All async methods should return the raw HTTP response.
    """

    if isinstance(radius, (int, float)):
        warnings.warn("Radius should be of type str or `astropy.units.Quantity`")
        radius = radius * u.deg

    request_payload = self._args_to_payload(
        coordinates=coordinates, radius=radius, collection=collection
    )
    # primarily for debug purposes, but also useful if you want to send
    # someone a URL linking directly to the data
    if get_query_payload:
        return request_payload
    response = self.exec_sync(request_payload["query"])
    return response