diff --git a/src/libcamera/pipeline_handler.cpp b/src/libcamera/pipeline_handler.cpp
index 0389f34486ab..9cd3504dc9db 100644
--- a/src/libcamera/pipeline_handler.cpp
+++ b/src/libcamera/pipeline_handler.cpp
@@ -360,9 +360,6 @@ void PipelineHandler::unlockMediaDevices()
  */
 void PipelineHandler::stop(Camera *camera)
 {
-	/* Stop the pipeline handler and let the queued requests complete. */
-	stopDevice(camera);
-
 	Camera::Private *data = camera->_d();
 
 	/* Cancel and signal as complete all waiting requests. */
@@ -372,8 +369,12 @@ void PipelineHandler::stop(Camera *camera)
 		cancelRequest(request);
 	}
 
+	/* Stop the pipeline handler and let the queued requests complete. */
+	stopDevice(camera);
+
 	/* Make sure no requests are pending. */
 	ASSERT(data->queuedRequests_.empty());
+	ASSERT(data->waitingRequests_.empty());
 
 	data->requestSequence_ = 0;
 }
