cheery / node-udev

Bindings to libudev
35 stars 31 forks source link

Promises don't work in the monitor callback! #24

Open nbroeking opened 7 years ago

nbroeking commented 7 years ago

const udev = require('udev'); const monitor = udev.monitor();

monitor.on('add', () => {
  console.log('1');
  Promise.resolve()
  .then(() => {
    console.log('2');
  })
  .then(() => {
    console.log('3');
  });
});

Output should be:

1 2 3

Output is

1

However if you do

monitor.on('add', () => {
  console.log('1');
  setTimeout(() => {
    Promise.resolve()
    .then(() => {
      console.log('2');
    })
    .then(() => {
      console.log('3');
    });
  })
});

Then the output is

1 2 3

nbroeking commented 7 years ago

@KevinDyer

cheery commented 7 years ago

If the Promise.resolve() works outside, then the culprit is likely in the function on_handle_event at udev.cc:51.