Is the alternative the more traditional spawning threads and using channels, or is there another paradigm? That's definitely something I'd be interested in learning more about.
I think they mean that there is more than one asynchronous paradigm. Actors is one alternative I can think of.
Where an actor has its own thread and communicates with a channel, right?
Not necessarily, a lot of actors can be sharing the same OS thread and be preemptively switched away from when they hit a certain limit of instructions or start an I/O call. Erlang demonstrates this very well because it works there without a glitch 99.99% of the time (and the remaining 0.01% are because of native code that does not yield control).
There is also readyness-based polling in a loop, without the async/await sugar.