code: func (m *Monitor) JobUpdate(updateKey aurora.JobUpdateKey, interval int, timeout int) (bool, error) {
  
  	status, err := m.JobUpdateStatus(updateKey,
  		map[aurora.JobUpdateStatus]bool{
  			aurora.JobUpdateStatus_ROLLED_FORWARD: true,
  			aurora.JobUpdateStatus_ROLLED_BACK:    true,
  			aurora.JobUpdateStatus_ABORTED:        true,
  			aurora.JobUpdateStatus_ERROR:          true,
  			aurora.JobUpdateStatus_FAILED:         true,
  		},
  		time.Duration(interval)*time.Second,
  		time.Duration(timeout)*time.Second)
  
  	if err != nil {
  		return false, err
  	}
  
  	m.Client.RealisConfig().logger.Printf("job update status: %v\n", status)
  
  	// Rolled forward is the only state in which an update has been successfully updated
  	// if we encounter an inactive state and it is not at rolled forward, update failed
  	switch status {
  	case aurora.JobUpdateStatus_ROLLED_FORWARD:
  		return true, nil
  	case aurora.JobUpdateStatus_ROLLED_BACK, aurora.JobUpdateStatus_ABORTED, aurora.JobUpdateStatus_ERROR, aurora.JobUpdateStatus_FAILED:
  		return false, errors.Errorf("bad terminal state for update: %v", status)
  	default:
  		return false, errors.Errorf("unexpected update state: %v", status)
  	}
  }
docs: // Polls the scheduler every certain amount of time to see if the update has succeeded