
* 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/renderer/atom_render_view_observer.cc
}
void AtomRenderViewObserver::EmitIPCEvent(blink::WebFrame* frame,
                                          const base::string16& channel,
                                          const base::ListValue& args) {
  if (!frame || frame->isWebRemoteFrame())
    return;
  v8::Isolate* isolate = blink::mainThreadIsolate();
  v8::HandleScope handle_scope(isolate);
  v8::Local<v8::Context> context = frame->mainWorldScriptContext();
  v8::Context::Scope context_scope(context);
  
  node::Environment* env = node::Environment::GetCurrent(context);
  if (!env)
    return;
  v8::Local<v8::Object> ipc;
  if (GetIPCObject(isolate, context, &ipc)) {
    auto args_vector = ListValueToVector(isolate, args);
    
    mate::Dictionary event = mate::Dictionary::CreateEmpty(isolate);
    event.Set("sender", ipc);
    args_vector.insert(args_vector.begin(), event.GetHandle());
    mate::EmitEvent(isolate, ipc, channel, args_vector);
  }
}
void AtomRenderViewObserver::DidCreateDocumentElement(