getContentServers(appid, callback) {
		if (typeof appid == 'function') {
			callback = appid;
			appid = null;
		}

		return StdLib.Promises.timeoutCallbackPromise(10000, ['servers'], callback, async (resolve, reject) => {
			let res;
			if (this._contentServerCache && this._contentServerCache.timestamp && Date.now() - this._contentServerCache.timestamp < (1000 * 60 * 60)) {
				// Cache for 1 hour
				res = this._contentServerCache.response;
			} else {
				res = await this._apiRequest('GET', 'IContentServerDirectoryService', 'GetServersForSteamPipe', 1, {cell_id: this.cellID || 0});
			}

			if (!res || !res.response || !res.response.servers) {
				return reject(new Error('Malformed response'));
			}

			this._contentServerCache = {
				timestamp: Date.now(),
				response: res
			};

			let servers = [];

			for (let serverKey in res.response.servers) {
				let server = res.response.servers[serverKey];
				if (server.allowed_app_ids && appid && !server.allowed_app_ids.includes(appid)) {
					continue;
				}

				if (server.type == 'CDN' || server.type == 'SteamCache') {
					servers.push(server);
				}
			}

			if (servers.length == 0) {
				return reject(new Error('No content servers available'));
			}

			servers = servers.map((srv) => {
				let processedSrv = {
					type: srv.type,
					sourceid: srv.source_id,
					cell: srv.cell_id,
					load: srv.load,
					preferred_server: srv.preferred_server,
					weightedload: srv.weighted_load,
					NumEntriesInClientList: srv.num_entries_in_client_list,
					Host: srv.host,
					vhost: srv.vhost,
					https_support: srv.https_support,
					//usetokenauth: '1'
				};

				if (srv.allowed_app_ids) {
					processedSrv.allowed_app_ids = srv.allowed_app_ids;
				}

				return processedSrv;
			});

			if (servers.length == 0) {
				delete this._contentServerCache;
				return reject(new Error('No servers found'));
			}

			// Return a copy of the array, not the original
			return resolve({servers: JSON.parse(JSON.stringify(servers))});
		});
	}
Get the list of currently-available content servers.
@param {int} [appid] - If you know the appid you want to download, pass it here as some content servers only provide content for specific games
@param {function} [callback]
@return Promise