_onWSMessage (rawMsg, flags) {
    debug('recv msg: %s', rawMsg)

    this._packetWDLastTS = Date.now()
    this._resetPacketWD()

    let msg

    try {
      msg = JSON.parse(rawMsg)
    } catch (e) {
      this.emit('error', `invalid message JSON: ${rawMsg}`)
      return
    }

    debug('recv msg: %j', msg)

    if (this._seqAudit) {
      const seqErr = this._validateMessageSeq(msg)

      if (seqErr !== null) {
        this.emit('error', seqErr)
        return
      }
    }

    this.emit('message', msg, flags)

    if (Array.isArray(msg)) {
      this._handleChannelMessage(msg, rawMsg)
    } else if (msg.event) {
      this._handleEventMessage(msg)
    } else {
      debug('recv unidentified message: %j', msg)
    }
  }
@param {string} rawMsg - incoming message JSON
@param {string} flags - flags
@private