:type maxhold: float
        :param maxhold:
            The maximum number of seconds an update is held waiting for a
            not-yet-arrived smaller ``update_id``. When this number of seconds
            is up, the update is delivered to the message-handling function
            even if some smaller ``update_id``\s have not yet arrived. If those
            smaller ``update_id``\s arrive at some later time, they are discarded.

        Calling this method will block forever. Use :meth:`.run_as_thread` to
        run it non-blockingly.

def run_forever(self, *args, **kwargs):
        """
        :type maxhold: float
        :param maxhold:
            The maximum number of seconds an update is held waiting for a
            not-yet-arrived smaller ``update_id``. When this number of seconds
            is up, the update is delivered to the message-handling function
            even if some smaller ``update_id``\s have not yet arrived. If those
            smaller ``update_id``\s arrive at some later time, they are discarded.

        Calling this method will block forever. Use :meth:`.run_as_thread` to
        run it non-blockingly.
        """
        # feed events to collect loop
        self._bot.scheduler.on_event(self._collectloop.input_queue.put)
        self._bot.scheduler.run_as_thread()

        self._orderer.run_as_thread(*args, **kwargs)
        self._collectloop.run_forever()