(request: ClientRequest)
| 296 | } |
| 297 | |
| 298 | async request<T = JsonRpcResult>(request: ClientRequest): Promise<T> { |
| 299 | this.assertOpen() |
| 300 | const key = requestIdKey(request.id) |
| 301 | if (this.pendingRequests.has(key)) { |
| 302 | throw new Error(`duplicate remote app-server request id ${String(request.id)}`) |
| 303 | } |
| 304 | |
| 305 | const resultPromise = new Promise<JsonRpcResult>((resolve, reject) => { |
| 306 | this.pendingRequests.set(key, { resolve, reject }) |
| 307 | }) |
| 308 | |
| 309 | try { |
| 310 | this.sendMessage(request) |
| 311 | return (await resultPromise) as T |
| 312 | } catch (error) { |
| 313 | this.pendingRequests.delete(key) |
| 314 | throw error |
| 315 | } |
| 316 | } |
| 317 | |
| 318 | async notify(notification: ClientNotification): Promise<void> { |
| 319 | this.assertOpen() |
no test coverage detected