From 928f8b270061b37b88d47d80aa2696893d0cf1bb Mon Sep 17 00:00:00 2001
From: Jeremy Tuloup <jeremy.tuloup@gmail.com>
Date: Fri, 26 Nov 2021 18:43:15 +0100
Subject: [PATCH 1/2] await _finish_kernel_start

---
 jupyter_server/services/kernels/kernelmanager.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/jupyter_server/services/kernels/kernelmanager.py b/jupyter_server/services/kernels/kernelmanager.py
index 7e9bfdd8e5..b1ce2ba009 100644
--- a/jupyter_server/services/kernels/kernelmanager.py
+++ b/jupyter_server/services/kernels/kernelmanager.py
@@ -210,7 +210,7 @@ async def start_kernel(self, kernel_id=None, path=None, **kwargs):
                 kwargs["kernel_id"] = kernel_id
             kernel_id = await ensure_async(self.pinned_superclass.start_kernel(self, **kwargs))
             self._kernel_connections[kernel_id] = 0
-            asyncio.ensure_future(self._finish_kernel_start(kernel_id))
+            await asyncio.ensure_future(self._finish_kernel_start(kernel_id))
             # add busy/activity markers:
             kernel = self.get_kernel(kernel_id)
             kernel.execution_state = "starting"

From 005e7837142ff69a35c444d786cd3bc9bcf20ea1 Mon Sep 17 00:00:00 2001
From: Jeremy Tuloup <jeremy.tuloup@gmail.com>
Date: Fri, 26 Nov 2021 21:59:18 +0100
Subject: [PATCH 2/2] Guard with use_pending_kernels

---
 jupyter_server/services/kernels/kernelmanager.py | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/jupyter_server/services/kernels/kernelmanager.py b/jupyter_server/services/kernels/kernelmanager.py
index b1ce2ba009..e455483d52 100644
--- a/jupyter_server/services/kernels/kernelmanager.py
+++ b/jupyter_server/services/kernels/kernelmanager.py
@@ -210,7 +210,9 @@ async def start_kernel(self, kernel_id=None, path=None, **kwargs):
                 kwargs["kernel_id"] = kernel_id
             kernel_id = await ensure_async(self.pinned_superclass.start_kernel(self, **kwargs))
             self._kernel_connections[kernel_id] = 0
-            await asyncio.ensure_future(self._finish_kernel_start(kernel_id))
+            fut = asyncio.ensure_future(self._finish_kernel_start(kernel_id))
+            if not getattr(self, "use_pending_kernels", None):
+                await fut
             # add busy/activity markers:
             kernel = self.get_kernel(kernel_id)
             kernel.execution_state = "starting"