We used to throw if event listener is not a function in Stack:

```js
ReactDOM.render(
  <h1 onClick={{}}>Hello World!</h1>,
  document.getElementById('container')
);
```

<img width="565" alt="screen shot 2017-08-08 at 3 41 08 pm" src="https://user-images.githubusercontent.com/810438/29077502-2646412e-7c50-11e7-8c99-3b7f6c0a2589.png">

Fiber silently ignores this.

I think we should throw. This would let us add support for objects (e.g. for passive listener configuration) if we want to in a minor rather than a major.
'nor use `dangerouslySetInnerHTML`.\n\nThis DOM node was rendered by `X`.',
      );
    });
    it('should support custom elements which extend native elements', () => {
      var container = document.createElement('div');
      spyOn(document, 'createElement').and.callThrough();
      ReactDOM.render(<div is="custom-div" />, container);
      expect(document.createElement).toHaveBeenCalledWith('div', {
        is: 'custom-div',
      });
    });
    it('should work load and error events on <image> element in SVG', () => {
      spyOn(console, 'log');
      var container = document.createElement('div');
      ReactDOM.render(
        <svg>
          <image
            xlinkHref="http://example.org/image"
            onError={e => console.log('onError called')}
            onLoad={e => console.log('onLoad called')}
          />
        </svg>,
        container,
      );
      var loadEvent = document.createEvent('Event');
      var errorEvent = document.createEvent('Event');
      loadEvent.initEvent('load', false, false);
      errorEvent.initEvent('error', false, false);
      container.getElementsByTagName('image')[0].dispatchEvent(errorEvent);
      container.getElementsByTagName('image')[0].dispatchEvent(loadEvent);