@angelthorns I tried to write an IRC daemon in Rust. There is so much global state, that it is a painful task to actually do so. You have to basically lock a bunch of effectively global state, gather all the data, perform modifications to the data, queue everything you want to send, release the lock, then send the messages. You have to do it this way because you can't hold the lock across an await boundary (which, to be fair... is the right thing to enforce, because that's asking for a deadlock).