     (dolist (spec straight-profiles)
       (cl-destructuring-bind (_profile . versions-lockfile) spec
         (let ((lockfile-path (straight--versions-file versions-lockfile)))
-          (when-let ((versions-alist (ignore-errors
-                                       (with-temp-buffer
-                                         (insert-file-contents-literally
-                                          lockfile-path)
-                                         (read (current-buffer))))))
+          (when-let* ((versions-alist (ignore-errors
+                                        (with-temp-buffer
+                                          (insert-file-contents-literally
+                                           lockfile-path)
+                                          (read (current-buffer))))))
             (dolist (spec versions-alist)
               (cl-destructuring-bind (local-repo . commit) spec
                 (setq versions (straight--alist-set

  ;; Try to get the URL for the submodule. If it doesn't exist,
  ;; return nil. This will work both for packages in the mirror
  ;; and packages in the attic.
  (when-let ((url (condition-case nil
                      (straight--get-call
                       "git" "config" "--file" ".gitmodules"
                       "--get" (format "submodule.%s.url"
                                       (symbol-name package)))
                    (error nil))))
    (and (not (string-empty-p url))
         ;; For the sake of elegance, we convert Github URLs to
         ;; use the `github' fetcher, if possible. At the time of

  "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))

