Pass the metaData on end like
'use strict';const FeedParserStream = require('feedparser');module.exports = (feedparserOptions, metaData) => { // console.log(metaData, 'herre'); const parsedItems = []; const feedparser = new FeedParserStream(feedparserOptions); // console.log(feedparser); feedparser.on('readable', () => { // console.log(resp); let item; while (item = feedparser.read()) { parsedItems.push(item); } return parsedItems; }).on('end', function next() { this.emit('response', { parsedItems, metaData }); }); return feedparser;};
and your feed-parser promised as
'use strict';const request = require('request');const feedParser = require('./feedParser');const parse = (requestOptions, feedparserOptions) => { const metaData = {}; return new Promise((resolve, reject) => { request.get(requestOptions).on('error', reject).on('response', async resp => { if (resp.statusCode === 304) { reject('Source not modified'); } else if (resp.statusCode === 200) { metaData.etagin = await resp.headers.etag; metaData.LastModifiedin = await resp.headers['last-modified']; metaData.LastModifiedLocal = await resp.headers['last-modified']; // console.log(metaData); } }).pipe(feedParser(feedparserOptions, metaData).on('error', reject).on('response', resolve)); });};module.exports = { parse};