
* Electron version: 1.4.6
* Operating system: macOS Sierra

### Expected behavior

Callbacks executed from `ipcRenderer.on` or `setImmediate` will be recorded in devtool timeline

### Actual behavior

Callbacks on `ipcRenderer.on` or `setImmediate` not recorded
(Callbacks on `setTimeout` are recorded normally)

### How to reproduce

This is a simple example that do some heavy task in `ipcRenderer.on` callback:
https://github.com/seanchas116/electron-testings/tree/master/timeline-ipc
atom/common/node_bindings.cc
process.Set("type", process_type);
  process.Set("resourcesPath", resources_path);
  
  if (!is_browser_)
    process.Set("_noBrowserGlobals", resources_path);
  
  base::FilePath helper_exec_path;
  PathService::Get(content::CHILD_PROCESS_EXE, &helper_exec_path);
  process.Set("helperExecPath", helper_exec_path);
  
  
  if (is_browser_ &&
      base::CommandLine::ForCurrentProcess()->HasSwitch("debug-brk"))
    process.Set("_debugWaitConnect", true);
  return env;
}
void NodeBindings::LoadEnvironment(node::Environment* env) {
  node::LoadEnvironment(env);
  mate::EmitEvent(env->isolate(), env->process_object(), "loaded");
}
void NodeBindings::PrepareMessageLoop() {
  DCHECK(!is_browser_ || BrowserThread::CurrentlyOn(BrowserThread::UI));
  
  
  uv_async_init(uv_loop_, &dummy_uv_handle_, nullptr);
  
  uv_sem_init(&embed_sem_, 0);
  uv_thread_create(&embed_thread_, EmbedThreadRunner, this);
}
void NodeBindings::RunMessageLoop() {