diff --git a/crates/project/src/project.rs b/crates/project/src/project.rs index 2daa959cc87bab9840b4c86a61bfe04cf611bb14..90985f881040512110759fa9647ad80205a6089b 100644 --- a/crates/project/src/project.rs +++ b/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"))?;