public static Type unwrapAsyncType(Type type) {
        return unwrapAsyncType(type, ClassUtil::isAsyncType);
    }
Unwraps an enclosing async type, which includes {@link CompletionStage},
{@link Publisher} 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