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 (
            <span>
              {'hello'} {'world'}
            </span>
          );
        }
      }
      const response = ReactDOMServer.renderToStaticMarkup(<TestComponent />);
      expect(response).toBe('<span>hello world</span>');
    });
    it('should not use comments for empty nodes', () => {
      class TestComponent extends React.Component {
        render() {
          return null;
        }
      }
      const response = ReactDOMServer.renderToStaticMarkup(<TestComponent />);
      expect(response).toBe('');
    });
    it('should only execute certain lifecycle methods', () => {
      function runTest() {
        const lifecycle = [];
        class TestComponent extends React.Component {