Welcome to the Linux Foundation Forum!

Correct solution for LFW211 Labs 9.2?



I'm going through the Linux Foundation / OpenJS course for certification, Node.JS Applications. I'm on Chapter 9, and doing the Labs Exercise 9.2 (labs-2). Here is the code with which I'm presented —

'use strict'

const { EventEmitter } = require('events')

process.nextTick(console.log, 'passed!')

const ee = new EventEmitter()


The exercise then says to...:

Currently the process crashes... Without removing any of the existing code, and without using a try/catch block add some code which stops the process from crashing. When implemented correctly the process should out put passed!.

So here's my solution —

'use strict'
const { EventEmitter } = require('events')

const ee = new EventEmitter()

ee.on('error', () => process.nextTick(console.log, 'passed!'))

ee.emit('error', Error('timeout'))

This works, when I run node index.js, I do get the desired result —

Here's my question — is this a correct solution? I don't use a setTimeout(), either the regular one from JavaScript or the "Promisfied" one from Node.JS, I used an ee.on('error', ...). The exercise also says to do this,...

Without removing any of the existing code, and without using a try/catch block...

I didn't re-write any code, but I did wrap the process.nextTick() line in the ee.on('error', ...) and moved it down below the ee declaration so it would work. Is that correct? Please let me know.




  • abraham.m.joseph

    This works. You can also just add
    ee.on('error', () => {});
    just before ee.emit in the original code. (just an empty handler is enough)

  • xdxmxc
    xdxmxc Posts: 148

    @faddah that would be rewriting the code - as @abraham.m.joseph says, attach an error handler

  • ailequal
    ailequal Posts: 1

    I was also having some doubts when doing this exercise, mainly because the solution that @abraham.m.joseph suggested needs to add the code before the ee.emit() part, which someone might consider as modifying the original code, but I am glad to see that it's the correct way in the end.


Upcoming Training