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.
);
        }
      }
    }
    return domElement;
  },
  setInitialProperties(
    domElement: Element,
    tag: string,
    rawProps: Object,
    rootContainerElement: Element | Document,
  ): void {
    var isCustomComponentTag = isCustomComponent(tag, rawProps);
    if (__DEV__) {
      validatePropertiesInDevelopment(tag, rawProps);
      if (isCustomComponentTag && !didWarnShadyDOM && domElement.shadyRoot) {
        warning(
          false,
          '%s is using shady DOM. Using shady DOM with React can ' +
            'cause things to break subtly.',
          getCurrentFiberOwnerName() || 'A component',
        );
        didWarnShadyDOM = true;
      }
    }
    
    var props: Object;
    switch (tag) {
      case 'iframe':
      case 'object':