                   (cl-block loop
                     (while t
                       (straight-popup
-                        (if-let ((err
-                                  (condition-case-unless-debug e
-                                      (progn
-                                        (funcall func package)
-                                        (setq next-repos (cdr next-repos))
-                                        (cl-return-from loop))
-                                    (error e)
-                                    ;; Emacs 24.5 has a bug where the
-                                    ;; byte-compiler signals an unused
-                                    ;; argument warning for the target
-                                    ;; of a `condition-case' unless
-                                    ;; it's used on every error
-                                    ;; handler.
-                                    (quit (ignore e)))))
+                        (if-let* ((err
+                                   (condition-case-unless-debug e
+                                       (progn
+                                         (funcall func package)
+                                         (setq next-repos (cdr next-repos))
+                                         (cl-return-from loop))
+                                     (error e)
+                                     ;; Emacs 24.5 has a bug where the
+                                     ;; byte-compiler signals an unused
+                                     ;; argument warning for the target
+                                     ;; of a `condition-case' unless
+                                     ;; it's used on every error
+                                     ;; handler.
+                                     (quit (ignore e)))))
                             (format (concat "While processing repository %S, "
                                             "an error occurred:\n\n  %S")
                                     local-repo (error-message-string err))

  "Extract a value from a property list, or return a default.
PLIST is a property list, PROP is the key to search for, and
DEFAULT is the value to return if PROP is not in PLIST."
  (if-let ((result (plist-member plist prop)))
      (cadr result)
    default))



;;;; Libraries

;; For `if-let*', `when-let*', `hash-table-keys', `string-join',
;; `string-trim', etc.
(require 'subr-x)

