I think the author misunderstood what reactive programming is. It is more paradigm and design pattern with publisher, subscribers, backpressure, fluent programming, etc. It's not about implementation details. Reactive programming and virtual threads can coexist. Nothing prevents to use virtual threads e. g. in Project Reactor. So, you compared apples and pears.