diff --git a/helix-term/src/handlers/diagnostics.rs b/helix-term/src/handlers/diagnostics.rs
index 39799c5f..4f537afb 100644
--- a/helix-term/src/handlers/diagnostics.rs
+++ b/helix-term/src/handlers/diagnostics.rs
@@ -177,7 +177,8 @@ pub fn pull_diagnostics_for_document(
             }
         });
 
-    let provider = DiagnosticProvider::from_server_and_identifier(language_server.id(), identifier);
+    let language_server_id = language_server.id();
+    let provider = DiagnosticProvider::from_server_and_identifier(language_server_id, identifier);
     let document_id = doc.id();
 
     tokio::spawn(async move {
@@ -193,7 +194,32 @@ pub fn pull_diagnostics_for_document(
                 })
                 .await
             }
-            Err(err) => log::error!("Pull diagnostic request failed: {err}"),
+            Err(err) => {
+                let parsed_cancellation_data = if let helix_lsp::Error::Rpc(error) = err {
+                    error.data.and_then(|data| {
+                        serde_json::from_value::<lsp::DiagnosticServerCancellationData>(data).ok()
+                    })
+                } else {
+                    log::error!("Pull diagnostic request failed: {err}");
+                    return;
+                };
+
+                if let Some(parsed_cancellation_data) = parsed_cancellation_data {
+                    if parsed_cancellation_data.retrigger_request {
+                        tokio::time::sleep(Duration::from_millis(500)).await;
+
+                        job::dispatch(move |editor, _| {
+                            if let (Some(doc), Some(language_server)) = (
+                                editor.document(document_id),
+                                editor.language_server_by_id(language_server_id),
+                            ) {
+                                pull_diagnostics_for_document(doc, language_server);
+                            }
+                        })
+                        .await;
+                    }
+                }
+            }
         }
     });
 }