Wrap async LSP handler bodies so a panic in one request doesn’t terminate
the server connection. tower-lsp 0.20 does not catch handler panics by
default; a single bad request would otherwise kill the editor’s LSP
session and lose unsaved client-side state.
The one place custom methods are registered — main and the test harness
both build the service here so their method tables can never drift. The
gate methods exist only under test-hooks (test targets); a production
build answers them with MethodNotFound like any unknown method.