Preview:
const API = require('./mock-api');
const EventEmitter = require('events');

module.exports = class Search extends EventEmitter {
    constructor() {
        super();
    }
    async searchCount(term) {
        if (!term) {
            this.emit(
                'SEARCH_ERROR',
                { message: 'INVALID_TERM', term }
            );
            return;
        }
        this.emit('SEARCH_STARTED', term);
        try {
            const count = await API.countMatches(term);
            this.emit('SEARCH_SUCCESS', { term, count });
        } catch (error) {
            this.emit('SEARCH_ERROR', { term, message: error.message });
        }
    }
}

downloadDownload PNG downloadDownload JPEG downloadDownload SVG

Tip: You can change the style, width & colours of the snippet with the inspect tool before clicking Download!

Click to optimize width for Twitter