joinGroup(groupId, inviteCode, callback) {
		if (typeof inviteCode === 'function') {
			callback = inviteCode;
			inviteCode = undefined;
		}

		return StdLib.Promises.timeoutCallbackPromise(10000, null, callback, (resolve, reject) => {
			this.user._sendUnified('ChatRoom.JoinChatRoomGroup#1', {
				chat_group_id: groupId,
				invite_code: inviteCode
			}, (body, hdr) => {
				if (hdr.proto.eresult == EResult.InvalidParam) {
					let err = new Error('Invalid group ID or invite code');
					err.eresult = hdr.proto.eresult;
					return reject(err);
				}

				let err = Helpers.eresultError(hdr.proto);
				if (err) {
					return reject(err);
				}

				body = preProcessObject(body);
				body.state = processChatGroupState(body.state, true);
				body.user_chat_state = processUserChatGroupState(body.user_chat_state, true);
				resolve(body);
			});
		});
	}
Join a chat room group.
@param {int|string} groupId - The group's ID
@param {string} [inviteCode] - An invite code to join this chat. Not necessary for public Steam groups.
@param {function} [callback]
@returns {Promise<{state: ChatRoomGroupState, user_chat_state: UserChatRoomGroupState}>}