 			handleClosed(source: .server, data: closeData)
 		case .error(let errorData):
 			eventObserver.send(value: SessionEvent(.sessionError, props: ["error": errorData.error.localizedDescription]))
-			queue.async { self.delegate?.sessionErrorReceived(errorData.error, details: nil) }
+			delegateQueue.async { self.delegate?.sessionErrorReceived(errorData.error, details: nil) }
 		case .computeStatus(let status):
 			computeStatus = status
 			informDelegate = true

		do {
			let data = try conInfo.encode(command)
			let cmdStr = String(data: data, encoding:.utf8) ?? "foo"
			Log.info("ssending:\n \(cmdStr)")
			self.webSocketWorker.send(data: data)
		} catch let err as NSError {
			Log.error("error sending message on websocket: \(err)", .session)

		self.conInfo = connectionInfo
		self.fileCache = fileCache
		self.imageCache = imageCache
		self.delegateQueue = queue
		self.appIncomingQueue = DispatchQueue(label: "session.appserver.incoming", qos: .userInitiated, target: .global(qos: .userInitiated))
		var ws = wsWorker
		if nil == ws {
			ws = SessionWebSocketWorker(conInfo: connectionInfo, wspaceId: workspace.wspaceId)
