Properly handle exceptions from PulsarWebDriver.enableAPIAgents
2025-05-13 19:22:15.636 WARN [-worker-29] a.p.p.s.c.i.StreamingCrawler - Illegal state
java.lang.IllegalStateException: The connection has been closed. at org.glassfish.tyrus.core.TyrusSession.checkConnectionState(TyrusSession.java:530) at org.glassfish.tyrus.core.TyrusSession.getAsyncRemote(TyrusSession.java:206) at ai.platon.pulsar.browser.driver.chrome.impl.TransportImpl.sendAsync(TransportImpl.kt:109) at ai.platon.pulsar.browser.driver.chrome.impl.ChromeDevToolsImpl.invoke1(ChromeDevToolsImpl.kt:163) at ai.platon.pulsar.browser.driver.chrome.impl.ChromeDevToolsImpl.invoke0(ChromeDevToolsImpl.kt:134) at ai.platon.pulsar.browser.driver.chrome.impl.ChromeDevToolsImpl.invoke(ChromeDevToolsImpl.kt:114) at ai.platon.pulsar.browser.driver.chrome.impl.DevToolsInvocationHandler.invoke(DevToolsInvocationHandler.kt:44) at jdk.proxy2/jdk.proxy2.$Proxy121.enable(Unknown Source) at ai.platon.pulsar.protocol.browser.driver.cdt.PulsarWebDriver.enableAPIAgents(PulsarWebDriver.kt:608) at ai.platon.pulsar.protocol.browser.driver.cdt.PulsarWebDriver.navigateTo(PulsarWebDriver.kt:114) at ai.platon.pulsar.protocol.browser.emulator.impl.InteractiveBrowserEmulator.navigateAndInteract(InteractiveBrowserEmulator.kt:492) at ai.platon.pulsar.protocol.browser.emulator.impl.InteractiveBrowserEmulator.browseWithWebDriver(InteractiveBrowserEmulator.kt:428) at ai.platon.pulsar.protocol.browser.emulator.impl.InteractiveBrowserEmulator.browseWithCancellationHandled(InteractiveBrowserEmulator.kt:381) at ai.platon.pulsar.protocol.browser.emulator.impl.InteractiveBrowserEmulator.browseWithDriver$suspendImpl(InteractiveBrowserEmulator.kt:272) at ai.platon.pulsar.protocol.browser.emulator.impl.InteractiveBrowserEmulator.browseWithDriver(InteractiveBrowserEmulator.kt) at ai.platon.pulsar.protocol.browser.emulator.impl.InteractiveBrowserEmulator.visit$suspendImpl(InteractiveBrowserEmulator.kt:91) at ai.platon.pulsar.protocol.browser.emulator.impl.InteractiveBrowserEmulator.visit(InteractiveBrowserEmulator.kt) at ai.platon.pulsar.protocol.browser.emulator.impl.BrowserWebDriverFetcher.fetchDeferred$suspendImpl(PrivacyManagedBrowserFetcher.kt:63) at ai.platon.pulsar.protocol.browser.emulator.impl.BrowserWebDriverFetcher$fetchDeferred$2.invokeSuspend(PrivacyManagedBrowserFetcher.kt) at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33) at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:104) at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:584) at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:811) at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:715) at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:702)