I realized that the refactor to use ReactDebugCurrentFrame as a decoupled stack frame for error messages is not reentrant: https://github.com/facebook/react/pull/10105/files#r127573520

Fiber is not reentrant but other renderers might be. The synchronous server renderer is atm.

We should add tests for warnings between renderers, such as calling a server-render from within a client render, and update the set/reset callsites to use push/pop instead to account for that.

render() {
          return <div />;
        }
      }
      ReactDOM.render(<Component />, document.createElement('container'));
    } finally {
      delete global.__REACT_DEVTOOLS_GLOBAL_HOOK__;
    }
  });
  it('should not crash calling findDOMNode inside a functional component', () => {
    const container = document.createElement('div');
    class Component extends React.Component {
      render() {
        return <div />;
      }
    }
    const instance = ReactTestUtils.renderIntoDocument(<Component />);
    const App = () => {
      ReactDOM.findDOMNode(instance);
      return <div />;
    };
    if (__DEV__) {
      ReactDOM.render(<App />, container);
    }
  });
  it('throws in DEV if jsdom is destroyed by the time setState() is called', () => {
    class App extends React.Component {