internal/lsp/lsprpc: make the LSP forwarder exit error clearer

In cases where the remote panics, make it clearer in the forwarder logs
that the remote has disconnected.

Change-Id: Ic7f9370f615198274696a18adaefe7dc62cac02e
Reviewed-on: https://go-review.googlesource.com/c/tools/+/250508
Run-TryBot: Robert Findley <rfindley@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Heschi Kreinick <heschi@google.com>
diff --git a/internal/lsp/lsprpc/lsprpc.go b/internal/lsp/lsprpc/lsprpc.go
index 2af6bdc..448c0e5 100644
--- a/internal/lsp/lsprpc/lsprpc.go
+++ b/internal/lsp/lsprpc/lsprpc.go
@@ -251,10 +251,13 @@
 		serverConn.Close()
 	}
 
-	err = serverConn.Err()
-	if err == nil {
-		err = clientConn.Err()
+	err = nil
+	if serverConn.Err() != nil {
+		err = errors.Errorf("remote disconnected: %v", err)
+	} else if clientConn.Err() != nil {
+		err = errors.Errorf("client disconnected: %v", err)
 	}
+	event.Log(ctx, fmt.Sprintf("forwarder: exited with error: %v", err))
 	return err
 }