Skip to content

Commit 50a4d4f

Browse files
authored
refactor[ReactDevToolsBindingsModel]: dont send messages when execution context is destroyed (#114)
* fix[ReactDevTools]: wrap sendMessage expressions in setTimeout * refactor[ReactDevToolsBindingsModel]: dont send messages when execution context is destroyed
1 parent e32908e commit 50a4d4f

File tree

1 file changed

+7
-0
lines changed

1 file changed

+7
-0
lines changed

front_end/models/react_native/ReactDevToolsBindingsModel.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -155,6 +155,13 @@ export class ReactDevToolsBindingsModel extends SDK.SDKModel.SDKModel {
155155
}
156156

157157
async sendMessage(domainName: DomainName, message: JSONValue): Promise<void> {
158+
// If Execution Context is destroyed, do not attempt to send a message (evaluate anything)
159+
// This could happen when we destroy Bridge from ReactDevToolsModel, which attempts to send `shutdown` event
160+
// We still need to call `bridge.shutdown()` in order to unsubscribe all listeners on the Frontend (this) side
161+
if (!this.fuseboxDispatcherIsInitialized) {
162+
return;
163+
}
164+
158165
const runtimeModel = this.target().model(SDK.RuntimeModel.RuntimeModel);
159166
if (!runtimeModel) {
160167
throw new Error(`Failed to send message from ReactDevToolsBindingsModel for domain ${domainName}: runtime model is not available`);

0 commit comments

Comments
 (0)