**Do you want to request a *feature* or report a *bug*?**

Bug

**What is the current behavior?**

Calling `this.isMounted()` in `componentWillUnmount` in prior versions would return `true`. Now it returns `false`.

I believe this was untested behavior before, but the new tests that were added may check the wrong value: https://github.com/facebook/react/blob/master/src/isomorphic/classic/class/__tests__/create-react-class-integration-test.js#L417 Changing this line to test for `true` will exhibit the behavior.

The fix would be to defer setting the  `__isMounted` flag to `false` until after all mixins and the `componentWillUnmount` method were called on the component.

**Which versions of React, and which browser / OS are affected by this issue? Did this work in previous versions of React?**

15.5.x and anything using `create-react-class` is broken. Working correctly in 15.4.x with `React.createClass`.

return {className: 'foo'};
      },
      render() {
        return <Foo />;
      },
    });
    var container = document.createElement('div');
    ReactDOM.render(<Outer />, container);
    expect(container.firstChild.className).toBe('foo');
  });
  it('should throw with non-object getInitialState() return values', () => {
    [['an array'], 'a string', 1234].forEach(function(state) {
      var Component = createReactClass({
        getInitialState: function() {
          return state;
        },
        render: function() {
          return <span />;
        },
      });
      var instance = <Component />;
      expect(function() {
        instance = ReactTestUtils.renderIntoDocument(instance);
      }).toThrowError(
        'Component.getInitialState(): must return an object or null',
      );
    });
  });
  it('should work with a null getInitialState() return value', () => {