code: func (m *cloudResourceSyncManager) NodeAddresses() ([]v1.NodeAddress, error) {
  	m.nodeAddressesMonitor.L.Lock()
  	defer m.nodeAddressesMonitor.L.Unlock()
  	// wait until there is something
  	for {
  		if addrs, err := m.nodeAddresses, m.nodeAddressesErr; len(addrs) > 0 || err != nil {
  			return addrs, err
  		}
  		klog.V(5).Infof("Waiting for cloud provider to provide node addresses")
  		m.nodeAddressesMonitor.Wait()
  	}
  }
docs: // NodeAddresses waits for the first sync loop to run. If no successful syncs
  // have run, it will return the most recent error. If node addresses have been
  // synced successfully, it will return the list of node addresses from the most
  // recent successful sync.