(define (read-response-v2 port backend operation) (let ((response (read port))) (match response (("error" err) (protocol-error (sprintf "Error from backend: ~s" err) backend operation)) ((log value) (for-each (lambda (logentry) ((backend-log!) (car logentry) (cdr logentry))) log) value) ((log) (for-each (lambda (logentry) ((backend-log!) (car logentry) (cdr logentry))) log) (void)) (else (error "Malformed response from backend" response)))))