packageacmeimport("fmt""time")// WaitFor polls the given function 'f', once every 'interval', up to 'timeout'.funcWaitFor(timeout,intervaltime.Duration,ffunc()(bool,error))error{varlastErrstringtimeup:=time.After(timeout)for{select{case<-timeup:returnfmt.Errorf("Time limit exceeded. Last error: %s",lastErr)default:}stop,err:=f()ifstop{returnnil}iferr!=nil{lastErr=err.Error()}time.Sleep(interval)}}