async close() {
		this.closing = true;
		
		// Clear all intervals
		if (this.intervals) {
			Object.values(this.intervals).forEach(interval => {
				clearInterval(interval);
			});
			this.intervals = {};
			logT('p2p', 'Cleared all intervals');
		}
		
		// Stop DHT discovery timers
		if (this.dhtTimers) {
			this.dhtTimers.forEach(timer => clearTimeout(timer));
			this.dhtTimers = [];
			logT('p2p', 'Cleared all DHT timers');
		}
		
		// Close any open file transfers
		for (const path in this.filesRequests) {
			logT('p2p', `Cancelling file transfer for ${path}`);
			delete this.filesRequests[path];
		}
		
		// Stop libp2p node
		if (this.node) {
			try {
				logT('p2p', 'Stopping libp2p node');
				await this.node.stop();
				logT('p2p', 'libp2p node stopped');
			} catch (err) {
				logTE('p2p', 'Error stopping libp2p node:', err);
			}
		}
		
		// Clear all maps and collections
		this.peers.clear();
		this.peersProtocol.clear();
		this.peersNonProtocol.clear();
		this.size = 0;
		this.peersProtocolSize = 0;
		this.peersNonProtocolSize = 0;

		this.responseHandlers.clear();
		this.topicHandlers.clear();

		return true;
	}
Close the P2P connection
@returns {Promise<boolean>} True when closed