(request: Request)
| 219 | } |
| 220 | |
| 221 | private async handleTunnelRequest(request: Request): Promise<Response> { |
| 222 | if (!this.socket) { |
| 223 | return createErrorResponse(); |
| 224 | } |
| 225 | |
| 226 | if (this.socket.readyState !== WebSocket.READY_STATE_OPEN) { |
| 227 | return createErrorResponse(); |
| 228 | } |
| 229 | |
| 230 | const id = crypto.randomUUID(); |
| 231 | |
| 232 | const promise = new Promise<Response>((resolve, reject) => { |
| 233 | this.responseResolvers[id] = { resolve, reject }; |
| 234 | }); |
| 235 | |
| 236 | try { |
| 237 | const message = await createRequestMessage(id, request); |
| 238 | this.socket.send(JSON.stringify(message)); |
| 239 | } catch (error) { |
| 240 | console.error(error); |
| 241 | delete this.responseResolvers[id]; |
| 242 | |
| 243 | return createErrorResponse(); |
| 244 | } |
| 245 | |
| 246 | return promise; |
| 247 | } |
| 248 | } |
| 249 | |
| 250 | const createErrorResponse = () => |
no test coverage detected