fix: Report both IO errors and main_loop errors
If rust-analyzer receives a malformed LSP request, the IO thread terminates with a meaningful error, but then closes the channel.
Once the channel has closed, the main_loop also terminates, but it only has RecvError and can't show a meaningful error. As a result, rust-analyzer would incorrectly claim that the client forgot to shutdown.
```
$ buggy_lsp_client | rust-analyzer
Error: client exited without proper shutdown sequence
```
Instead, include both error messages when the server shuts down.