code: func ShouldEventuallyReturn(t testing.TB, f interface{}, v interface{}, timeouts ...time.Duration) {
  	t.Helper()
  	interval := 10 * time.Millisecond
  	timeout := time.After(500 * time.Millisecond)
  	switch len(timeouts) {
  	case 1:
  		interval = timeouts[0]
  		break
  	case 2:
  		interval = timeouts[0]
  		timeout = time.After(timeouts[1])
  	}
  	ticker := time.NewTicker(interval)
  	defer ticker.Stop()
  
  	if isFunction(f) {
  		for {
  			select {
  			case <-timeout:
  				t.Fatalf("function f never returned value %s", v)
  			case <-ticker.C:
  				val, err := pollFuncReturn(f)
  				if err != nil {
  					t.Fatal(err)
  				}
  				if v == val {
  					return
  				}
  			}
  		}
  	} else {
  		t.Fatal("ShouldEventuallyEqual should receive a function with no args and more than 0 outs")
  		return
  	}
  }
docs: // ShouldEventuallyReturn asserts that eventually the return of f should be v, timeouts: 0 - evaluation interval, 1 - timeout