Properly terminate server handler thread on exceptions
[lsp-test.git] / src / Language / Haskell / LSP / Test / Session.hs
index 9af3a6774150b559500ee544ce63a298b944d387..a153cba988890e08b5fe6f54e40d3a8cdfcbb377 100644 (file)
@@ -203,11 +203,9 @@ runSessionWithHandles serverIn serverOut serverHandler config caps rootDir sessi
 
   let context = SessionContext serverIn absRootDir messageChan reqMap initRsp config caps
       initState = SessionState (IdInt 0) mempty mempty 0 False Nothing
-
-  threadId <- forkIO $ void $ serverHandler serverOut context
-  (result, _) <- runSession context initState session
-
-  killThread threadId
+      launchServerHandler = forkIO $ void $ serverHandler serverOut context
+  (result, _) <- bracket launchServerHandler killThread $
+    const $ runSession context initState session
 
   return result