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

Bug

**What is the current behavior?**

`isPending` is never set to true when calling `startTransition` within `useEffect`, but it *does* work properly when within a `useLayoutEffect`.

https://codesandbox.io/s/usetransition-useeffect-issues-p1j9s

Here's the correct behavior (accomplished via `useLayoutEffect`):

![good](https://user-images.githubusercontent.com/1500684/68164575-662d7b00-ff1a-11e9-9d02-71d7a22fd5cf.gif)

Here's the incorrect behavior (via `useEffect`):

![bad](https://user-images.githubusercontent.com/1500684/68164540-4c8c3380-ff1a-11e9-9191-d9c87ddecbed.gif)

Note the difference is that the opacity never changes to 0.4 (which is determined based on the `isPending` state).

**What is the expected behavior?**

I expect them to both behave the same (at least as far as the user can observe).

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

- react@0.0.0-experimental-f6b8d31a7
- react-dom@0.0.0-experimental-f6b8d31a7
const refCallback = ref;
    const inst = create();
    refCallback(inst);
    return () => {
      refCallback(null);
    };
  } else if (ref !== null && ref !== undefined) {
    const refObject = ref;
    if (__DEV__) {
      warning(
        refObject.hasOwnProperty('current'),
        'Expected useImperativeHandle() first argument to either be a ' +
          'ref callback or React.createRef() object. Instead received: %s.',
        'an object with keys {' + Object.keys(refObject).join(', ') + '}',
      );
    }
    const inst = create();
    refObject.current = inst;
    return () => {
      refObject.current = null;
    };
  }
}
function mountImperativeHandle<T>(
  ref: {current: T | null} | ((inst: T | null) => mixed) | null | void,
  create: () => T,
  deps: Array<mixed> | void | null,
): void {
  if (__DEV__) {