Glitch in unreleased code: a timeout from a Tornado socket throws socket.error into PyMongo, which calls socket.close, which Motor delegates to Tornado's IOStream.close. Motor still has an unresolved Future from IOStream.read_bytes which is now in an error state, but the greenlet that was going to await this Future has terminated.
Recent versions of Tornado log a warning when this Future is garbage collected, "Future exception was never retrieved."
Motor's socket code should retrieve the IOStream.read_bytes Future's exception on timeout.