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