async def METHOD_NAME(self, continuation, span):
    try:
        call = await continuation()
        # code and details are both coroutines that need to be await-ed,
        # the callbacks added with add_done_callback do not allow async
        # code so we need to get the code and details here then pass them
        # to the callback.
        code = await call.code()
        details = await call.details()
        call.add_done_callback(
            _unary_done_callback(
                span, code, details, self._call_response_hook
            )
        )
        return call
    except grpc.aio.AioRpcError as exc:
        self.add_error_details_to_span(span, exc)
        raise exc