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.

constructor(props) {
            super(props);
            lifecycle.push('getInitialState');
            this.state = {name: 'TestComponent'};
          }
          UNSAFE_componentWillMount() {
            lifecycle.push('componentWillMount');
          }
          componentDidMount() {
            lifecycle.push('componentDidMount');
          }
          render() {
            lifecycle.push('render');
            return <span>Component name: {this.state.name}</span>;
          }
          UNSAFE_componentWillUpdate() {
            lifecycle.push('componentWillUpdate');
          }
          componentDidUpdate() {
            lifecycle.push('componentDidUpdate');
          }
          shouldComponentUpdate() {