...or I could just thread pool synchronous actions (and return a dict)