const timers = require('timers'); const Module = require('module'); process.atomBinding = function(name) { try { return process.binding("atom_" + process.type + "_" + name); } catch (error) { if (/No such module/.test(error.message)) { return process.binding("atom_common_" + name); } } }; if (!process.env.ELECTRON_HIDE_INTERNAL_MODULES) { // Add common/api/lib to module search paths. Module.globalPaths.push(path.join(__dirname, 'api')); } // setImmediate and process.nextTick makes use of uv_check and uv_prepare to // run the callbacks, however since we only run uv loop on requests, the // callbacks wouldn't be called until something else activated the uv loop, // which would delay the callbacks for arbitrary long time. So we should // initiatively activate the uv loop once setImmediate and process.nextTick is // called. var wrapWithActivateUvLoop = function(func) { return function() { process.activateUvLoop(); return func.apply(this, arguments); }; };