Repository URL to install this package:
Version:
1.0.0 ▾
|
import * as http from 'http';
import { clearTimeout, setTimeout } from 'timers';
import { MongoCryptKMSRequestNetworkTimeoutError } from '../errors';
/**
* @internal
*/
export function get(
url: URL | string,
options: http.RequestOptions = {}
): Promise<{ body: string; status: number | undefined }> {
return new Promise((resolve, reject) => {
/* eslint-disable prefer-const */
let timeoutId: NodeJS.Timeout;
const request = http
.get(url, options, response => {
response.setEncoding('utf8');
let body = '';
response.on('data', chunk => (body += chunk));
response.on('end', () => {
clearTimeout(timeoutId);
resolve({ status: response.statusCode, body });
});
})
.on('error', error => {
clearTimeout(timeoutId);
reject(error);
})
.end();
timeoutId = setTimeout(() => {
request.destroy(
new MongoCryptKMSRequestNetworkTimeoutError(`request timed out after 10 seconds`)
);
}, 10000);
});
}