'Overridden method to ensure that the green version of
Poller is used.
Behaves the same as :meth:`zmq.core.Poller.poll`'

def poll(self, timeout=(-1)):

    if (timeout is None):
        timeout = (-1)
    if (timeout < 0):
        timeout = (-1)
    rlist = None
    wlist = None
    xlist = None
    if (timeout > 0):
        tout = gevent.Timeout.start_new((timeout / 1000.0))
    else:
        tout = None
    try:
        (rlist, wlist, xlist) = self._get_descriptors()
        while True:
            events = super(_Poller, self).poll(0)
            if (events or (timeout == 0)):
                return events
            _bug_timeout = gevent.Timeout.start_new(self._gevent_bug_timeout)
            try:
                select.select(rlist, wlist, xlist)
            except gevent.Timeout as t:
                if (t is not _bug_timeout):
                    raise
            finally:
                _bug_timeout.cancel()
    except gevent.Timeout as t:
        if (t is not tout):
            raise
        return []
    finally:
        if (timeout > 0):
            tout.cancel()
