After some further reading on twisted, it probably isn't necessary after all.

My most recent experience with asynchronous network IO frameworks is with one where you can optionally still have multiple threads running the main loop (usually to take advantage of the presence of multiple processor cores), so you'd still need locking on some central objects.