Please try with the latest master in my repo: https://github.com/reversefold/mongo-python-driver. I readded the lock for _return_socket and all tests are passing reliably for me right now with Python 2.7.3.

As for calling unwatch in on_thread_died, yes, I suppose it does end up calling get which uses self._local. I did see the admonition but I assumed it meant directly within that function, not in subsequent calls. I'll change it to not require ident._local.