async shutdown() {
    clearInterval(this.heartbeatTimer);
    await this.idCardHandler.dispose();

    for (const subscriber of this.remoteNodes.values()) {
      subscriber.dispose();
    }

    this.publisher.sendNodeShutdown(this.nodeId);

    await this.publisher.dispose();
    this.command.dispose();
  }
Shutdown event: clears all timers, sends a termination status to other
nodes, and removes entries from the cache