(scheme (require openssl)) (scheme (xdef ar-init-socket (lambda (init-fn . args) (let ((oc (current-custodian)) (nc (make-custodian))) (current-custodian nc) (apply (lambda (in out . tail) (current-custodian oc) (associate-custodian nc in out) (list* in out tail)) (call-with-values init-fn (if (pair? args) (car args) list))))))) (def socket-connect (host port) (ar-init-socket (fn () (scheme.tcp-connect host port)))) (def ssl-connect (host port) (ar-init-socket (fn () (scheme.ssl-connect host port))))