This isn't an solution on how to use async features, but one which will also satisfy your needs, i think.
Basically, you can move the fetching part to an external application, and just read the mails with emacs. Therefore, emacs doesn't have to download them, which should conclude in a non-blocking gnus/emacs. After you've set up the email-retriever, you can just change the way gnus
gets its emails to a local path.
IMAP
If you want to use IMAP, I'd suggest to use offlineimap
. It's a small python script, which downloads your mail to a local folder. The ArchWiki has also a quite comprehensive documentation for configuring offlineimap
. An alternative would be isync
(which has also an entry in the ArchWiki)
Additionally, this guide provides an example configuration file for both gnus
and offlineimap
. (I use Mutt, so this is not my gnus
config, and can't vouch directly for it.)
POP3
For POP3, I found getmail
, but i have no experience with that.
Additinally I'd like to point you to this Gnus Manual entry