Use a multithreaded blocking approach. Much nicer than async.