getCDNAuthToken(appID, depotID, hostname, callback) {
		return StdLib.Promises.timeoutCallbackPromise(10000, ['token', 'expires'], callback, (resolve, reject) => {
			if (this._contentServerTokens[depotID + '_' + hostname] && this._contentServerTokens[depotID + '_' + hostname].expires - Date.now() > (1000 * 60 * 60)) {
				return resolve(this._contentServerTokens[depotID + '_' + hostname]);
			}

			this._send(EMsg.ClientGetCDNAuthToken, {
				app_id: appID,
				depot_id: depotID,
				host_name: hostname
			}, (body) => {
				if (body.eresult != EResult.OK) {
					return reject(Helpers.eresultError(body.eresult));
				}

				return resolve(this._contentServerTokens[depotID + '_' + hostname] = {
					token: body.token,
					expires: new Date(body.expiration_time * 1000)
				});
			});
		});
	}
Get an auth token for a particular CDN server.
@param {int} appID
@param {int} depotID
@param {string} hostname - The hostname of the CDN server for which we want a token
@param {function} [callback]
@return Promise