diff --git a/packages/react-reconciler/src/ReactFiberBeginWork.js b/packages/react-reconciler/src/ReactFiberBeginWork.js
index 902e424c3505bb..73b723bf65458a 100644
--- a/packages/react-reconciler/src/ReactFiberBeginWork.js
+++ b/packages/react-reconciler/src/ReactFiberBeginWork.js
@@ -1242,7 +1242,7 @@ function updateSuspenseComponent(
} else {
// The current tree has not already timed out. That means the primary
// children are not wrapped in a fragment fiber.
- const currentPrimaryChild: Fiber = (current.child: any);
+ const currentPrimaryChild = current.child;
if (nextDidTimeout) {
// Timed out. Wrap the children in a fragment fiber to keep them
// separate from the fallback children.
@@ -1256,7 +1256,6 @@ function updateSuspenseComponent(
null,
);
primaryChildFragment.child = currentPrimaryChild;
- currentPrimaryChild.return = primaryChildFragment;
// Even though we're creating a new fiber, there are no new children,
// because we're reusing an already mounted tree. So we don't need to
diff --git a/packages/react-reconciler/src/__tests__/ReactSuspense-test.internal.js b/packages/react-reconciler/src/__tests__/ReactSuspense-test.internal.js
index 8647b2a5d5c61a..5b4e111c169d0c 100644
--- a/packages/react-reconciler/src/__tests__/ReactSuspense-test.internal.js
+++ b/packages/react-reconciler/src/__tests__/ReactSuspense-test.internal.js
@@ -883,7 +883,44 @@ describe('ReactSuspense', () => {
root.update(null);
expect(root).toFlushWithoutYielding();
+ jest.advanceTimersByTime(1000);
+ });
+
+ it('#14162', () => {
+ const {lazy} = React;
+
+ function Hello() {
+ return hello;
+ }
+
+ async function fetchComponent() {
+ return new Promise(r => {
+ // simulating a delayed import() call
+ setTimeout(r, 1000, {default: Hello});
+ });
+ }
+
+ const LazyHello = lazy(fetchComponent);
+
+ class App extends React.Component {
+ state = {render: false};
+
+ componentDidMount() {
+ setTimeout(() => this.setState({render: true}));
+ }
+
+ render() {
+ return (
+ loading...}>
+ {this.state.render && }
+
+ );
+ }
+ }
+
+ const root = ReactTestRenderer.create(null);
+ root.update();
jest.advanceTimersByTime(1000);
});
});