createEncryptedAppTicket(appid, userData, callback) {
		if (typeof userData === 'function') {
			callback = userData;
			userData = Buffer.alloc(0);
		}

		return StdLib.Promises.timeoutCallbackPromise(10000, ['encryptedAppTicket'], callback, (resolve, reject) => {
			this._send(EMsg.ClientRequestEncryptedAppTicket, {
				app_id: appid,
				userdata: userData
			}, (body) => {
				let err = Helpers.eresultError(body.eresult);
				if (err) {
					return reject(err);
				}

				if (body.app_id != appid) {
					// Don't know if this can even happen
					return reject(new Error('Steam did not send an appticket for the requested appid'));
				}

				if (!body.encrypted_app_ticket) {
					return reject(new Error('No appticket in response'));
				}

				resolve({
					encryptedAppTicket: SteamUserAppAuth._encodeProto(Schema.EncryptedAppTicket, body.encrypted_app_ticket)
				});
			});
		});
	}
Request an encrypted appticket for a particular app. The app must be set up on the Steam backend for encrypted apptickets.
@param {int} appid - The Steam AppID of the app you want a ticket for
@param {Buffer} [userData] - If the app expects some "user data", provide it here
@param {function} [callback] - First argument is "err", second is the ticket as a Buffer (on success)
@return {Promise}