Function: eca-api-request-sync
eca-api-request-sync is a natively compiled function defined in
eca-api.el.
Signature
(eca-api-request-sync SESSION &key METHOD PARAMS)
Documentation
Request sync the ECA server SESSION passing METHOD and PARAMS.
Source Code
;; Defined in /nix/store/jklqzw6pzz6j4jrbv8wy0iwgi7jlrbld-emacs-packages-deps/share/emacs/site-lisp/elpa/eca-20260928.1827/eca-api.el
(cl-defun eca-api-request-sync (session &key method params)
"Request sync the ECA server SESSION passing METHOD and PARAMS."
(let* ((send-time (float-time))
(expected-time (and eca-api-response-timeout
(+ send-time eca-api-response-timeout)))
resp-result resp-error)
(eca-api-request-async
session
:method method
:params params
:success-callback (lambda (res) (setf resp-result (or res :finished)) (throw 'eca-done '_))
:error-callback (lambda (err) (setf resp-error err) (throw 'eca-done '_)))
(let ((req-id eca--last-id))
(unwind-protect
(progn
(while (not (or resp-error resp-result))
(if (functionp 'json-rpc-connection)
(catch 'eca-done (sit-for 0.01))
(catch 'eca-done
(accept-process-output
(eca--session-process session)
(if expected-time (- expected-time send-time) 1))))
(setq send-time (float-time))
(when (and expected-time (< expected-time send-time))
(error "Timeout while waiting for response. Method: %s" method)))
(cond
((eq resp-result :finished) nil)
(resp-result resp-result)
(resp-error (error "%s" resp-error))))
;; Cleanup: remove stale handler on non-local exit (timeout, C-g, etc.)
(unless (or resp-result resp-error)
(setf (eca--session-response-handlers session)
(plist-put (eca--session-response-handlers session) req-id nil)))))))