It goes on to assert how everything is I/O bound, and how bad threads are for that. Fair. What follows an intro to tokio, with focus on how you span a CPU-bound task, how work stealing works, and then how you should use SIMD for your CPU-bound tasks. Huh.
I mean, if you have a mostly CPU-bound task and also the occasional I/O socket, you can keep things much simpler by using threads and std::sync. Especially if you are in the audience of that article, then you don't know yet how much more complicated things can get when you need to use async in Rust. And how much Rust's safety model actually changes the past wisdom of "threads are evil, period" in favour of threads again.