public static Type unwrapUnaryAsyncType(Type type) {
        return unwrapAsyncType(type, ClassUtil::isUnaryAsyncType);
    }
Unwraps an enclosing unary async type, which includes {@link CompletionStage},
{@code reactor.core.publisher.Mono} and {@code scala.concurrent.Future}, and returns its type arguments.
Returns the accepted type itself if the {@link Type} is not enclosed by one of them.
core/src/main/java/com/linecorp/armeria/internal/server/annotation/ClassUtil.java