add(interval, url, options, callback) {
				if (isNaN(interval) || interval <= 0)
					throw new TypeError('Invalid poll interval');

				const ival = interval >>> 0, opts = Object.assign({}, options, { timeout: ival * 1000 - 5 });

				const fn = () => Request.request(url, opts).then(res => {
					if (!Poll.active())
						return;

					let res_json = null;
					try {
						res_json = res.json();
					}
					catch (err) {}

					callback(res, res_json, res.duration);
				});

				return (Poll.add(fn, ival) ? fn : null);
			}
Register a repeating HTTP request with an optional callback
to invoke whenever a response for the request is received.

@instance
@memberof LuCI.request.poll
@param {number} interval
The poll interval in seconds.

@param {string} url
The URL to request on each poll.

@param {LuCI.request.RequestOptions} [options]
Additional options to configure the request.

@param {LuCI.request.poll~callbackFn} [callback]
{@link LuCI.request.poll~callbackFn Callback} function to
invoke for each HTTP reply.

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

@returns {function}
Returns the internally created poll function.