diff --git a/core/lib/Drupal/Core/Render/Renderer.php b/core/lib/Drupal/Core/Render/Renderer.php
index 8df43985ed..79f3152d19 100644
--- a/core/lib/Drupal/Core/Render/Renderer.php
+++ b/core/lib/Drupal/Core/Render/Renderer.php
@@ -353,6 +353,10 @@ protected function doRender(&$elements, $is_root_call = FALSE) {
     // Build the element if it is still empty.
     if (isset($elements['#lazy_builder'])) {
       $new_elements = $this->doCallback('#lazy_builder', $elements['#lazy_builder'][0], $elements['#lazy_builder'][1]);
+      // Pseudo-code
+      if (!is_array($new_elements)) {
+        throw new \LogicException("#lazy_builder callbacks must return a valid renderable array, got $new_elements from " . $elements['#lazy_builder'][0]);
+      }
       // Retain the original cacheability metadata, plus cache keys.
       CacheableMetadata::createFromRenderArray($elements)
         ->merge(CacheableMetadata::createFromRenderArray($new_elements))
