LSP in Rust erroring, or is my VSCode extension wrong?

I'm using a fork of tower-lsp for building my language server: GitHub - realhydroper/rustlsp: Language Server Protocol implementation written in Rust I have only made it local-threaded and changed the crate's name..

But it seems like something isn't going well, and I believe the issue is within my Visual Studio Code extension:

// The module 'vscode' contains the VS Code extensibility API
// Import the module and reference it with the alias vscode in your code below
import path from 'path';
import * as vscode from 'vscode';

// Language client
import * as vscodelc from "vscode-languageclient/node";

const whackHome = process.env.WHACK_HOME;

// This method is called when your extension is activated
// Your extension is activated the very first time the command is executed
export function activate(context: vscode.ExtensionContext) {
    // Use the console to output diagnostic information (console.log) and errors (console.error)
    // This line of code will only be executed once when your extension is activated
    console.log('Congratulations, your extension "whack-engine" is now active!');

    if (whackHome === undefined)
    {
        vscode.window.showErrorMessage("Environment variable WHACK_HOME must be set.");
    }

    // The command has been defined in the package.json file
    // Now provide the implementation of the command with registerCommand
    // The commandId parameter must match the command field in package.json
    const disposable = vscode.commands.registerCommand('whack-engine.helloWorld', () => {
        // The code you place here will be executed every time your command is executed
        // Display a message box to the user
        vscode.window.showInformationMessage('Hello World from Whack engine support!');
    });

    context.subscriptions.push(disposable);

    // Setup language server
    if (whackHome)
    {
        const underWindows = process.platform == "win32";
        const server: vscodelc.Executable = {
            command: path.resolve(whackHome, "bin/whacklangserver" + (underWindows ? ".exe" : "")),
            args: [],
            options: {},
        };

        const serverOptions: vscodelc.ServerOptions = server;

        let clientOptions: vscodelc.LanguageClientOptions = {
            // Register the server for AS3/MXML/CSS
            documentSelector: [
                { scheme: "file", language: "as3" },
                { scheme: "file", language: "mxml" },
                { scheme: "file", language: "css" }
            ]
        };

        const client = new vscodelc.LanguageClient("ActionScript 3 & MXML language server", serverOptions, clientOptions);
        client.start();
    }
}

// This method is called when your extension is deactivated
export function deactivate() {}

Here are pieces of my language server in Rust:

#[realhydroper_lsp::async_trait(?Send)]
impl LanguageServer for Backend {
    async fn initialize(&self, _: InitializeParams) -> Result<InitializeResult> {
        Ok(InitializeResult {
            capabilities: ServerCapabilities {
                position_encoding: Some(PositionEncodingKind::UTF8),
                hover_provider: Some(HoverProviderCapability::Simple(true)),
                definition_provider: Some(OneOf::Left(true)),
                ..ServerCapabilities::default()
            },
            server_info: None,
            ..default()
        })
    }

    async fn initialized(&self, _: InitializedParams) {
        self.client
            .log_message(MessageType::INFO, "server initialized!")
            .await;

        self.client
            .register_capability(vec![
                Registration {
                    id: "whack-watch".to_owned(),
                    method: "workspace/didChangeWatchedFiles".to_owned(),
                    register_options: Some(serde_json::json! ({
                        "watches": [
                            { "globPattern": "**/*.{as,mxml,css}" },
                            { "globPattern": "**/whack.toml" }
                        ]
                    })),
                }
            ]).await.unwrap();
    }

    // [ ... ]
}

#[tokio::main]
async fn main() {
    let stdin = tokio::io::stdin();
    let stdout = tokio::io::stdout();

    let (service, socket) = LspService::new(|client| Backend {
        client,
        compiler_results: RefCell::new(vec![]),
        opened_file_content: Rc::new(RefCell::new(hashmap! {})),
        change_delay: Rc::new(RefCell::new(hashmap! {})),
    });
    Server::new(stdin, stdout, socket).serve(service).await;
}

Here's the log when running my Visual Studio Code extension:

Congratulations, your extension "whack-engine" is now active!
extensionHostProcess.js:178
rejected promise not handled within 1 second: Error: Client is not running and can't be stopped. It's current state is: starting
extensionHostProcess.js:178
stack trace: Error: Client is not running and can't be stopped. It's current state is: starting
	at LanguageClient.shutdown (c:\Users\Hydro\Repository Groups\Whack\vscode-extension\node_modules\vscode-languageclient\lib\common\client.js:964:19)
	at LanguageClient.stop (c:\Users\Hydro\Repository Groups\Whack\vscode-extension\node_modules\vscode-languageclient\lib\common\client.js:935:21)
	at LanguageClient.stop (c:\Users\Hydro\Repository Groups\Whack\vscode-extension\node_modules\vscode-languageclient\lib\node\main.js:150:22)
	at LanguageClient.doInitialize (c:\Users\Hydro\Repository Groups\Whack\vscode-extension\node_modules\vscode-languageclient\lib\common\client.js:917:27)
	at async LanguageClient.start (c:\Users\Hydro\Repository Groups\Whack\vscode-extension\node_modules\vscode-languageclient\lib\common\client.js:772:13)
extensionHostProcess.js:178
rejected promise not handled within 1 second: Error: Unsupported position encoding (utf-8) received from server ActionScript 3 & MXML language server
extensionHostProcess.js:178
stack trace: Error: Unsupported position encoding (utf-8) received from server ActionScript 3 & MXML language server
	at LanguageClient.doInitialize (c:\Users\Hydro\Repository Groups\Whack\vscode-extension\node_modules\vscode-languageclient\lib\common\client.js:836:23)
	at async LanguageClient.start (c:\Users\Hydro\Repository Groups\Whack\vscode-extension\node_modules\vscode-languageclient\lib\common\client.js:772:13)
extensionHostProcess.js:178
rejected promise not handled within 1 second: Error: Client is not running and can't be stopped. It's current state is: starting
extensionHostProcess.js:178
stack trace: Error: Client is not running and can't be stopped. It's current state is: starting
	at LanguageClient.shutdown (c:\Users\Hydro\Repository Groups\Whack\vscode-extension\node_modules\vscode-languageclient\lib\common\client.js:964:19)
	at LanguageClient.stop (c:\Users\Hydro\Repository Groups\Whack\vscode-extension\node_modules\vscode-languageclient\lib\common\client.js:935:21)
	at LanguageClient.stop (c:\Users\Hydro\Repository Groups\Whack\vscode-extension\node_modules\vscode-languageclient\lib\node\main.js:150:22)
	at LanguageClient.doInitialize (c:\Users\Hydro\Repository Groups\Whack\vscode-extension\node_modules\vscode-languageclient\lib\common\client.js:917:27)
	at async LanguageClient.start (c:\Users\Hydro\Repository Groups\Whack\vscode-extension\node_modules\vscode-languageclient\lib\common\client.js:772:13)
extensionHostProcess.js:178
rejected promise not handled within 1 second: Error: Client is not running and can't be stopped. It's current state is: starting
extensionHostProcess.js:178
stack trace: Error: Client is not running and can't be stopped. It's current state is: starting
	at LanguageClient.shutdown (c:\Users\Hydro\Repository Groups\Whack\vscode-extension\node_modules\vscode-languageclient\lib\common\client.js:964:19)
	at LanguageClient.stop (c:\Users\Hydro\Repository Groups\Whack\vscode-extension\node_modules\vscode-languageclient\lib\common\client.js:935:21)
	at LanguageClient.stop (c:\Users\Hydro\Repository Groups\Whack\vscode-extension\node_modules\vscode-languageclient\lib\node\main.js:150:22)
	at LanguageClient.doInitialize (c:\Users\Hydro\Repository Groups\Whack\vscode-extension\node_modules\vscode-languageclient\lib\common\client.js:917:27)
	at async LanguageClient.start (c:\Users\Hydro\Repository Groups\Whack\vscode-extension\node_modules\vscode-languageclient\lib\common\client.js:772:13)
extensionHostProcess.js:178
rejected promise not handled within 1 second: Error: Client is not running and can't be stopped. It's current state is: starting
extensionHostProcess.js:178
stack trace: Error: Client is not running and can't be stopped. It's current state is: starting
	at LanguageClient.shutdown (c:\Users\Hydro\Repository Groups\Whack\vscode-extension\node_modules\vscode-languageclient\lib\common\client.js:964:19)
	at LanguageClient.stop (c:\Users\Hydro\Repository Groups\Whack\vscode-extension\node_modules\vscode-languageclient\lib\common\client.js:935:21)
	at LanguageClient.stop (c:\Users\Hydro\Repository Groups\Whack\vscode-extension\node_modules\vscode-languageclient\lib\node\main.js:150:22)
	at LanguageClient.doInitialize (c:\Users\Hydro\Repository Groups\Whack\vscode-extension\node_modules\vscode-languageclient\lib\common\client.js:917:27)
	at async LanguageClient.start (c:\Users\Hydro\Repository Groups\Whack\vscode-extension\node_modules\vscode-languageclient\lib\common\client.js:772:13)
extensionHostProcess.js:178
rejected promise not handled within 1 second: Error: Client is not running and can't be stopped. It's current state is: starting
extensionHostProcess.js:178
stack trace: Error: Client is not running and can't be stopped. It's current state is: starting
	at LanguageClient.shutdown (c:\Users\Hydro\Repository Groups\Whack\vscode-extension\node_modules\vscode-languageclient\lib\common\client.js:964:19)
	at LanguageClient.stop (c:\Users\Hydro\Repository Groups\Whack\vscode-extension\node_modules\vscode-languageclient\lib\common\client.js:935:21)
	at LanguageClient.stop (c:\Users\Hydro\Repository Groups\Whack\vscode-extension\node_modules\vscode-languageclient\lib\node\main.js:150:22)
	at LanguageClient.doInitialize (c:\Users\Hydro\Repository Groups\Whack\vscode-extension\node_modules\vscode-languageclient\lib\common\client.js:917:27)
	at async LanguageClient.start (c:\Users\Hydro\Repository Groups\Whack\vscode-extension\node_modules\vscode-languageclient\lib\common\client.js:772:13)

After I removed the needed PositionEncodingKing::UTF8 requirements, it looks like my server is working, but I still need to learn how to use it properly.