

通过dubbo-compiler的插件生成了接口，会自动生成xxxAsync()方法，但是它只是通过CompletableFuture.completedFuture()包装了同步方法，它仍然会阻塞consumer的业务线程。这么实现的目的是什么？

![image](https://user-images.githubusercontent.com/18373569/216303859-4c8fe6e5-428b-417c-baa5-df4aa444719c.png)

![image](https://user-images.githubusercontent.com/18373569/216304057-e564e268-14e6-40e3-8244-7380fd9c9c85.png)


## Ask your question here
我当前使用dubbo 3.1.4的triple协议(同时使用了IDL+protobuf)，想提供CompletableFuture<Result>返回值的异步调用，应该怎么做？

客户端如果不使用proxy=“nativestub”，会抛出以下错误：

This serialization only support google protobuf messages, but the actual input type is :java.util.concurrent.CompletableFuture

客户端如果使用proxy=“nativestub”，调用kickOffDeviceAsync(),实际上会调用CompletableFuture.completedFuture(kickOffDevice(request));.如此就会造成阻塞了，没有达到异步的目的





import org.apache.dubbo.rpc.protocol.tri.HelloReply;
import org.apache.dubbo.rpc.protocol.tri.stream.TripleServerStream;
import io.netty.util.concurrent.ImmediateEventExecutor;
import org.junit.jupiter.api.Test;
import org.mockito.Mockito;
import java.lang.reflect.Method;
import java.util.Collections;
import static org.junit.jupiter.api.Assertions.fail;
import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.Mockito.when;
class ReflectionServerCallTest {
    @Test
    void doStartCall() throws NoSuchMethodException {
        Invoker<?> invoker = Mockito.mock(Invoker.class);
        TripleServerStream serverStream = Mockito.mock(TripleServerStream.class);
        ProviderModel providerModel = Mockito.mock(ProviderModel.class);
        ReflectionMethodDescriptor methodDescriptor = Mockito.mock(
            ReflectionMethodDescriptor.class);
        URL url = Mockito.mock(URL.class);
        when(invoker.getUrl())
            .thenReturn(url);
        when(url.getServiceModel())
            .thenReturn(providerModel);
        String service = "testService";
        String methodName = "method";
        try {
            ReflectionAbstractServerCall call = new ReflectionAbstractServerCall(invoker, serverStream,
                new FrameworkModel(), "",
                service, methodName,
                Collections.emptyList(),