getDepotDecryptionKey(appID, depotID, callback) {
		appID = parseInt(appID, 10);
		depotID = parseInt(depotID, 10);

		return StdLib.Promises.timeoutCallbackPromise(10000, ['key'], callback, async (resolve, reject) => {
			// Check if it's cached locally
			let filename = `depot_key_${appID}_${depotID}.bin`;
			let file = await this._readFile(filename);
			if (file && file.length > 4 && Math.floor(Date.now() / 1000) - file.readUInt32LE(0) < (60 * 60 * 24 * 14)) {
				return resolve({key: file.slice(4)});
			}

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

				if (body.depot_id != depotID) {
					return reject(new Error('Did not receive decryption key for correct depot'));
				}

				let key = body.depot_encryption_key;
				file = Buffer.concat([Buffer.alloc(4), key]);
				file.writeUInt32LE(Math.floor(Date.now() / 1000), 0);

				await this._saveFile(filename, file);
				return resolve({key});
			});
		});
	}
Request the decryption key for a particular depot.
@param {int} appID
@param {int} depotID
@param {function} [callback]
@return Promise