Ensure project is still alive by the time remote LSP request starts

Antonio Scandurra created

Change summary

crates/project/src/project.rs | 6 ++++++
1 file changed, 6 insertions(+)

Detailed changes

crates/project/src/project.rs 🔗

@@ -4210,7 +4210,13 @@ impl Project {
             let rpc = self.client.clone();
             let message = request.to_proto(project_id, buffer);
             return cx.spawn_weak(|this, cx| async move {
+                // Ensure the project is still alive by the time the task
+                // is scheduled.
+                this.upgrade(&cx)
+                    .ok_or_else(|| anyhow!("project dropped"))?;
+
                 let response = rpc.request(message).await?;
+
                 let this = this
                     .upgrade(&cx)
                     .ok_or_else(|| anyhow!("project dropped"))?;