This effectively removes async from our code, and will probably take a while. But at the end, we will end up with code that doesn't have RwLock at all and uses threads and channels for communication. Which might be a communication performance increase.
This probably needs benchmarking. Which means that we need a system to do benchmarking.