const http = require('http') const https = require('https') const {promisify} = require('util') https.get[promisify.custom] = function getAsyncHttps (options) { return new Promise((resolve, reject) => { const req = https.get(options, res => { if (res.statusCode >= 400) return reject(new Error(res.statusCode)) res.end = new Promise(resolve => res.on('end', resolve)) resolve(res) }) req.on('error', reject) req.on('timeout', () => reject(new Error('timeout')) && req.abort()) }) } http.get[promisify.custom] = function getAsyncHttp (options) { return new Promise((resolve, reject) => { const req = http.get(options, res => { if (res.statusCode >= 400) return reject(new Error(res.statusCode)) res.end = new Promise(resolve => res.on('end', resolve)) resolve(res) }) req.on('error', reject) req.on('timeout', () => reject(new Error('timeout')) && req.abort()) }) } const parseJSONData = (data, resolve, reject) => { try { resolve(JSON.parse(data.read())) } catch (error) { reject(error) } } module.exports.parseJSONData = parseJSONData module.exports.httpsGetAsync = promisify(https.get) module.exports.httpGetAsync = promisify(http.get)