<!-- If you need to report a security issue please visit https://github.com/apache/dubbo/security/policy -->

- [ ] I have searched the [issues](https://github.com/apache/dubbo/issues) of this repository and believe that this is not a duplicate.

## Describe the proposal
<!-- Please use this for a concrete design proposal for functionality. -->
<!-- If you just want to request a new feature and discuss the possible business value, create a Feature Request. -->

responseObserver.onCompleted();
    }
    public static <T, R> StreamObserver<T> biOrClientStreamCall(Invoker<?> invoker,
        MethodDescriptor method, StreamObserver<R> responseObserver) {
        return (StreamObserver<T>) call(invoker, method, new Object[]{responseObserver});
    }
    public static <T, R> void serverStreamCall(Invoker<?> invoker, MethodDescriptor method,
        T request, StreamObserver<R> responseObserver) {
        call(invoker, method, new Object[]{request, responseObserver});
    }
    private static Object call(Invoker<?> invoker, MethodDescriptor methodDescriptor,
        Object[] arguments) {
        RpcInvocation rpcInvocation = new RpcInvocation(invoker.getUrl().getServiceModel(),
            methodDescriptor.getMethodName(), invoker.getInterface().getName(),
            invoker.getUrl().getProtocolServiceKey(), methodDescriptor.getParameterClasses(),
            arguments);
        try {
            return InvocationUtil.invoke(invoker, rpcInvocation);
        } catch (Throwable e) {
            if (e instanceof RuntimeException) {
                throw (RuntimeException) e;
            } else {
                throw TriRpcStatus.INTERNAL
                    .withCause(e)
                    .asException();
            }
        }
    }
}