diff --git a/atom/common/node_bindings.cc b/atom/common/node_bindings.cc index 10ab8f4929a4..eb627d06b757 100644 --- a/atom/common/node_bindings.cc +++ b/atom/common/node_bindings.cc @@ -178,6 +178,9 @@ void NodeBindings::LoadEnvironment(node::Environment* env) { if (node::use_debug_agent) node::EnableDebug(env); + + v8::Local msg = mate::StringToV8(env->isolate(), "loaded"); + node::MakeCallback(env->isolate(), env->process_object(), "emit", 1, &msg); } void NodeBindings::PrepareMessageLoop() { diff --git a/atom/renderer/lib/init.coffee b/atom/renderer/lib/init.coffee index 1e0167d6e154..470715626b13 100644 --- a/atom/renderer/lib/init.coffee +++ b/atom/renderer/lib/init.coffee @@ -88,12 +88,8 @@ if nodeIntegration in ['true', 'all', 'except-iframe', 'manual-enable-iframe'] window.addEventListener 'unload', -> process.emit 'exit' else - # The Module.runMain will run process._tickCallck() immediately, so we are - # able to delete the symbols in this tick even though we used process.nextTick - # to schedule it. - # It is important that we put this in process.nextTick, if we delete them now - # some code in node.js will complain about "process not defined". - process.nextTick -> + # Delete Node's symbols after the Environment has been loaded. + process.once 'loaded', -> delete global.process delete global.setImmediate delete global.clearImmediate