list(...args) {
		const msg = {
			jsonrpc: '2.0',
			id:      rpcRequestID++,
			method:  'list',
			params:  args.length ? args : undefined
		};

		return new Promise(L.bind(function(resolve, reject) {
			/* store request info */
			const req = { resolve, reject };

			/* call rpc */
			this.call(msg, this.parseCallReply.bind(this, req));
		}, this));
	}
Lists available remote ubus objects or the method signatures of
specific objects.

This function has two signatures and is sensitive to the number of
arguments passed to it:
 - `list()` -
   Returns an array containing the names of all remote `ubus` objects
 - `list("objname", ...)`
   Returns method signatures for each given `ubus` object name.

@param {...string} [objectNames]
If any object names are given, this function will return the method
signatures of each given object.

@returns {Promise<Array<string>|Object<string, Object<string, Object<string, string>>>>}
When invoked without arguments, this function will return a promise
resolving to an array of `ubus` object names. When invoked with one or
more arguments, a promise resolving to an object describing the method
signatures of each requested `ubus` object name will be returned.