code: function EncryptedRpcChannel(connection, context, app) {
      this.constructor.super_.call(this, connection);
      this._app = {
          api_id: app.id,
          app_version: app.version,
          device_model: app.deviceModel || 'Unknown Device',
          system_version: app.systemVersion || 'Unknown System',
          lang_code: app.langCode || 'en'
      };
      this._initialized = false;
      this._context = context;
      this._callbackMap = {};
      this._messageIdsToBeAck = [];
      // configure the message-parser
      this._parser = new message.MessageParser();
      this._parser.on('mtproto.type.New_session_created', this._onNewSessionCreated.bind(this));
      this._parser.on('mtproto.type.Rpc_result', this._onRpcResult.bind(this));
      this._parser.on('mtproto.type.Msgs_ack', this._onMsgsAck.bind(this));
      this._parser.on('mtproto.type.Bad_server_salt', this._onBadServerSalt.bind(this));
      // the sent messages still waiting for a response (msg-ack or rpc-result)
      this.waiting4Response = {};
      this.lastMsgId = -1;
  }
docs: The constructor require the following: - connection (required): the [Http|Tcp]Connection . - context (required): { authKey, serverSalt, sessionId, sequenceNumber, apiVersion } - app (required), the application data required for execute the first API call to Telegram: { id, version, langCode, deviceModel, systemVersion }