I think this shouldn't pass:

```js
    expect(() => {
      expect(() => {
        throw new Error('haha') // no warning
      }).toWarnDev(
        'nope',
      );
    }).toThrow('haha');
```

but it does.
expect(moo.state.amIImmutable()).toBe(true);
    const secondState = new NotActuallyImmutable('second');
    moo._replaceState(secondState);
    expect(moo.state.str).toBe('second');
    expect(moo.state.amIImmutable()).toBe(true);
    expect(moo.state).toBe(secondState);
    moo.setState({str: 'third'});
    expect(moo.state.str).toBe('third');
    
    expect(moo.state.amIImmutable).toBe(undefined);
    
    const fifthState = new NotActuallyImmutable('fifth');
    ReactDOM.unstable_batchedUpdates(function() {
      moo.setState({str: 'fourth'});
      moo._replaceState(fifthState);
    });
    expect(moo.state).toBe(fifthState);
    
    const sixthState = new NotActuallyImmutable('sixth');
    ReactDOM.unstable_batchedUpdates(function() {
      moo._replaceState(sixthState);
      moo.setState({str: 'seventh'});
    });
    expect(moo.state.str).toBe('seventh');
    expect(moo.state.amIImmutable).toBe(undefined);
  });
  it('should not warn about unmounting during unmounting', () => {
    const container = document.createElement('div');
    const layer = document.createElement('div');
    class Component extends React.Component {