(lambda (response) (let ((port (make-delimited-input-port (response-port response) (header-value 'content-length (response-headers response))))) (pp "poop poop!") (if (= 200 (response-class response)) ; Everything cool? (let ((result (reader port))) (discard-remaining-data! #f port) result) (http-client-error 'call-with-input-request ;; Message (sprintf (case (response-class response) ((400) "Client error: ~A ~A") ((500) "Server error: ~A ~A") (else "Unexpected server response: ~A ~A")) (response-code response) (response-reason response)) ;; arguments (list uri) ;; Specific type (case (response-class response) ((400) 'client-error) ((500) 'server-error) (else 'unexpected-server-response)) 'response response 'body (read-string #f port)))))