code: def on_change(self, server_description):
          
          # We do no I/O holding the lock.
          with self._lock:
              # Monitors may continue working on ismaster calls for some time
              # after a call to Topology.close, so this method may be called at
              # any time. Ensure the topology is open before processing the
              # change.
              # Any monitored server was definitely in the topology description
              # once. Check if it's still in the description or if some state-
              # change removed it. E.g., we got a host list from the primary
              # that didn't include this server.
              if (self._opened and
                      self._description.has_server(server_description.address)):
                  self._process_change(server_description)
docs: Process a new ServerDescription after an ismaster call completes.