making the callback optionnal and launched on process.nextTick