I admit I haven't used cheerio before, but it looks like a good tool! The code looks decent. I see a couple places that can be simplified. For example: > $('a').each(function(i, e) { if ( $(e).attr('href').indexOf('reddit.com') === -1 && $(e).attr('href').indexOf('imgur.com') === -1 ) { responseUrl = $(e).attr('href'); } }); This can be simplified by using the [`:not()` selector](https://developer.mozilla.org/en-US/docs/Web/CSS/:not) with an [attribute selector `*=`](https://developer.mozilla.org/en-US/docs/Web/CSS/Attribute_selectors): const links = $('a:not([href*="reddit.com"]):not([href*="imgur.com"])'); if (links.length) { responseUrl = links.attr('href'); } When I tested this with the sample data there was only one such anchor tag, but if there happen to be multiple, should `responseUrl` be set to the first, last or other? --- The only other simplification I see is this: > on('end', function() { resolve(responseObject); }); can be simplified to: on('end', resolve.bind(null, responseObject)); using a [partially applied function](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/bind#Partially_applied_functions).