## CONTEXT:
Есть старый bridge:
```ts
export declare function send(method: string, ...params: Array<any>): Promise<any>;
export declare function subscribe(callback: (event: any) => void): void;
```

## ЦЕЛЬ:
Поверх методов send и subscribeсделать метод call<T>(method: string, ...params: Array<any>): Promise<T>; который внутри себя как rpc-like и client-сторона делает следующее,
```ts
call<T>(method: string, ...params: Array<any>): Promise<T> => {
	//.Формируем задачу с уникальный uuid и отпарвляем её через bridge.send
	const task = {
		uid: genUuid();
		...Promise.withResolvers(),
	};

	this._tasks.set(task.uid, task);
	// Таймайт ещё нужеен чтобы редженктить

	bridge.send("rpc:call", {
		uid: task.uid,
		method,
		params,
	});

	return task.promise;
}
```

Также, client на уровне бриджа пордписывается на `rpc:call:response` для обработки ответов `rpc:call`:
```ts
subscribe('rpc:call:response', (data) => {
	const {uid, result, error} = data;
	const task = this._tasks.get(task);
	if (!task) {
		// логируем
		return;
	}

	this._tasks.delete(task);

	if (error) {
		task.reject(error)
		return;
	}

	task.resovle(result);
});
```

Дальше, server/remote сторона должна научиться обрабатывать `rpc:call`, пример всевдокода:
```
handle "rpc:call":
  parse data
  extract uid, method, params
  try 
    func = methorRegistry.get(method)
	result = call(func, params)
	send_bridge_subscribe_event(rpc:call:response, {uid, result})
  catch error {
	send_bridge_subscribe_event(rpc:call:response, {uid, error})
  }
```

