private function lookupdPollingTick()
    {
        // add some jitter
        $jitter = (float)rand() / (float)getrandmax()
            * NsqConfig::getLookupdPollJitter()
            * NsqConfig::getLookupdPollInterval();

        Timer::after(intval($jitter) + 1, function() {
            if ($this->isStopped) {
                return;
            }

            Timer::tick(NsqConfig::getLookupdPollInterval(), function() {
                try {
                    Task::execute($this->queryLookupd());
                } catch (\Throwable $t) {
                    sys_echo("lookupdPolling exception {$t->getMessage()}");
                } catch (\Exception $ex) {
                    sys_echo("lookupdPolling exception {$ex->getMessage()}");
                }
            }, $this->lookupdPollingTickId());
        });
    }