add(fn, interval) {
			if (interval == null || interval <= 0)
				interval = env.pollinterval || null;

			if (isNaN(interval) || typeof(fn) != 'function')
				throw new TypeError('Invalid argument to LuCI.poll.add()');

			for (let i = 0; i < this.queue.length; i++)
				if (this.queue[i].fn === fn)
					return false;

			const e = {
				r: true,
				i: interval >>> 0,
				fn
			};

			this.queue.push(e);

			if (this.tick != null && !this.active())
				this.start();

			return true;
		}
Add a new operation to the polling loop. If the polling loop is not
already started at this point, it will be implicitly started.

@instance
@memberof LuCI.poll
@param {function} fn
The function to invoke on each poll interval.

@param {number} interval
The poll interval in seconds.

@throws {TypeError}
Throws `TypeError` when an invalid interval was passed.

@returns {boolean}
Returns `true` if the function has been added or `false` if it
already is registered.