code: function ZCLClient(config) {
    ZNPClient.call(this, config);
  
    // handle zcl messages
    this.on('incoming-message', this._handleIncomingMessage.bind(this));
  
    // handle attribute reports
    this.on('zcl-command:ReportAttributes', this._handleReportAttributes.bind(this));
  
    // XXX: This really should be pulled out and handled by the user, or at least put into a IASZone mixin
    this.on('zcl-command:IAS Zone.Zone Enroll Request', this._handleZoneEnrollRequest.bind(this));
  }
docs: Extends ZNPClient to provice the ZCL layer, without understanding any of the underlying hardware.