Hi. I attempted to write thread-friendly wrapper around url-http and it appears to hang Emacs. Am i doing something wrong or it's bug? (require 'url-http) (require 'url-parse) (defun url-retrieve-thread (url) "Wrapper around url-http that download `URL' without blocking main thread." (let* ((parsed-url (if (url-p url) url (url-generic-parse-url url))) (mut (make-mutex)) (cond-var (make-condition-variable mut)) (buf nil) (cb (lambda (&rest _) (setq buf (current-buffer)) (with-mutex mut (condition-notify cond-var)) )) ) (url-http parsed-url cb nil) (with-mutex mut (condition-wait cond-var) ) buf)) Idea was to call it from thread. In most trivial case: (make-thread (apply 'url-retrieve-thread "http://example.com" nil)) It makes Emacs unresponsive (even C-g does not work). I tested it on Emacs 28.2 and once of recent development versions (emacs-31.0.50) Happy Hacking!