@Override
    public ExchangeType exchangeType(RoutingContext routingContext) {
        final boolean isRequestStreaming =
                AnnotatedValueResolver.aggregationType(aggregationStrategy,
                                                       routingContext.headers()) != AggregationType.ALL;
        Boolean isResponseStreaming =
                responseConverter.isResponseStreaming(
                        actualReturnType, routingContext.result().routingResult()
                                                        .negotiatedResponseMediaType());
        if (isResponseStreaming == null) {
            isResponseStreaming = true;
        }
        if (isRequestStreaming) {
            return isResponseStreaming ? ExchangeType.BIDI_STREAMING : ExchangeType.REQUEST_STREAMING;
        } else {
            return isResponseStreaming ? ExchangeType.RESPONSE_STREAMING : ExchangeType.UNARY;
        }
    }
Converts the specified {@code obj} with {@link CompletableFuture}.
core/src/main/java/com/linecorp/armeria/internal/server/annotation/DefaultAnnotatedService.java