 		frameChunkRequests = []
 		
 		// Create primitives for finished requests
-		os_unfair_lock_lock(&readTessellationLock)	// Don't build primitives while new tessellations are being loaded
+		publishQueue.sync {	// Don't build primitives while new tessellations are being published
 			for (request, chunk) in deliveredChunks {
 				let runtimeLodKey = regionHashLodKey(request.chunkId.hashed, atLod: request.lodLevel)
 				

		
			logPendingRequests()
			logBlockingRequests()
		os_unfair_lock_unlock(&readTessellationLock)	// $ Lock only in this fun
	}
	
	private func loadGeometry(_ name: String) -> GeoTessellation? {

			let request = ChunkRequest(regionId, atLod: streamedLodLevel)
			pendingChunks.insert(request)
			
			streamQueue.async {
				if let tessellation = self.loadGeometry(chunkName) {
					self.publishQueue.async(flags: .barrier) {							// Don't allow reads while publishing finished chunk
						self.deliveredChunks.append((request, tessellation))
					}
				} else {
					print("No geometry chunk available for \(chunkName)")
