'An attribute of the current server\'s description.
If the client is not connected, this will block until a connection is
established or raise ServerSelectionTimeoutError if no server is
available.
Not threadsafe if used multiple times in a single method, since
the server may change. In such cases, store a local reference to a
ServerDescription first, then use its properties.'

def _server_property(self, attr_name):

    server = self._topology.select_server(writable_server_selector)
    return getattr(server.description, attr_name)
