code: func NewSyncManager(cloud cloudprovider.Interface, nodeName types.NodeName, syncPeriod time.Duration) SyncManager {
  	return &cloudResourceSyncManager{
  		cloud:      cloud,
  		syncPeriod: syncPeriod,
  		nodeName:   nodeName,
  		// nodeAddressesMonitor is a monitor that guards a result (nodeAddresses,
  		// nodeAddressesErr) of the sync loop under the condition that a result has
  		// been saved at least once. The semantics here are:
  		//
  		// * Readers of the result will wait on the monitor until the first result
  		//   has been saved.
  		// * The sync loop (i.e. the only writer), will signal all waiters every
  		//   time it updates the result.
  		nodeAddressesMonitor: sync.NewCond(&sync.Mutex{}),
  	}
  }
docs: // NewSyncManager creates a manager responsible for collecting resources from a
  // cloud provider through requests that are sensitive to timeouts and hanging