33 lines
853 B
JavaScript
33 lines
853 B
JavaScript
'use strict';
|
|
const {globalAgent} = require('../agent.js');
|
|
const Http2OverHttpX = require('./h2-over-hx.js');
|
|
const getAuthorizationHeaders = require('./get-auth-headers.js');
|
|
|
|
const getStatusCode = stream => new Promise((resolve, reject) => {
|
|
stream.once('error', reject);
|
|
stream.once('response', headers => {
|
|
stream.off('error', reject);
|
|
resolve(headers[':status']);
|
|
});
|
|
});
|
|
|
|
class Http2OverHttp2 extends Http2OverHttpX {
|
|
async _getProxyStream(authority) {
|
|
const {proxyOptions} = this;
|
|
|
|
const headers = {
|
|
...getAuthorizationHeaders(this),
|
|
...proxyOptions.headers,
|
|
':method': 'CONNECT',
|
|
':authority': authority
|
|
};
|
|
|
|
const stream = await globalAgent.request(proxyOptions.url, proxyOptions, headers);
|
|
const statusCode = await getStatusCode(stream);
|
|
|
|
return [stream, statusCode, ''];
|
|
}
|
|
}
|
|
|
|
module.exports = Http2OverHttp2;
|