- threadId <- forkIO $ void $ serverHandler serverOut context
- (result, _) <- runSession context initState session
-
- killThread threadId
+ errorHandler = throwTo mainThreadId :: SessionException -> IO()
+ serverLauncher = forkIO $ catch (serverHandler serverOut context) errorHandler
+ server = (Just serverIn, Just serverOut, Nothing, serverProc)
+ serverFinalizer tid = finally (timeout (messageTimeout config * 1000000)
+ (runSession' exitServer))
+ (cleanupRunningProcess server >> killThread tid)