()
| 86 | } |
| 87 | |
| 88 | getFrame() { |
| 89 | if (this.frame) { |
| 90 | return this.frame; |
| 91 | } |
| 92 | |
| 93 | const method = { |
| 94 | [HTTP2_HEADER_PATH]: this.path, |
| 95 | [HTTP2_HEADER_METHOD]: this.method |
| 96 | }; |
| 97 | |
| 98 | let headers = this.mapToHttp2Header(this._headers); |
| 99 | |
| 100 | headers = Object.assign(headers, method); |
| 101 | |
| 102 | const frame = this.session.request(headers); |
| 103 | |
| 104 | frame.once('response', (headers, flags) => { |
| 105 | headers = this.mapToHttpHeader(headers); |
| 106 | frame.headers = headers; |
| 107 | frame.statusCode = headers[HTTP2_HEADER_STATUS]; |
| 108 | frame.status = frame.statusCode; |
| 109 | this.emit('response', frame); |
| 110 | }); |
| 111 | |
| 112 | this._headerSent = true; |
| 113 | |
| 114 | frame.on('drain', () => this.emit('drain')); |
| 115 | frame.on('error', (error) => this.emit('error', error)); |
| 116 | frame.on('close', () => this.session.close()); |
| 117 | |
| 118 | this.frame = frame; |
| 119 | return frame; |
| 120 | } |
| 121 | |
| 122 | mapToHttpHeader(headers) { |
| 123 | const keys = Object.keys(headers); |
no test coverage detected