I tried this on guile 2.2.0 and the localhost queries seem to work OK. — Matt mwette$ ./15227 server ;;; note: auto-compilation is enabled, set GUILE_AUTO_COMPILE=0 ;;; or pass the --no-auto-compile argument to disable. ;;; compiling /Users/mwette/proj/scheme/guile/bugs-guile/./15227 ;;; compiled /Users/mwette/.cache/guile/ccache/2.2-LE-8-3.9/Users/mwette/proj/scheme/guile/bugs-guile/15227.go Web server replied 'Hello World! 0'. Web server replied 'Hello World! 1'. Web server replied 'Hello World! 2'. Web server replied 'Hello World! 3'. mwette$ ./15227 client Getting http://gnu.org... response #< version: (1 . 1) code: 301 reason-phrase: "Moved Permanently" headers: ((date . #) (server . "Apache/2.4.7") (location . #< scheme: http userinfo: #f host: "www.gnu.org" port: #f path: "/" query: #f fragment: #f>) (content-length . 290) (connection close) (content-type text/html (charset . "iso-8859-1"))) port: #> Getting http://fsf.org... response #< version: (1 . 0) code: 301 reason-phrase: "Moved Permanently" headers: ((server . "nginx/1.1.19") (date . #) (content-type text/html) (content-length . 185) (location . #< scheme: http userinfo: #f host: "www.fsf.org" port: #f path: "/" query: #f fragment: #f>) (x-cache . "MISS from www.fsforg") (x-cache-lookup . "MISS from www.fsforg:80") (via "1.0 www.fsforg (squid/3.1.19)") (connection close)) port: #> Getting http://localhost:8080... response #< version: (1 . 1) code: 200 reason-phrase: "OK" headers: ((content-length . 14) (content-type text/plain (charset . "utf-8"))) port: #> Getting http://localhost:8080... response #< version: (1 . 1) code: 200 reason-phrase: "OK" headers: ((content-length . 14) (content-type text/plain (charset . "utf-8"))) port: #> mwette$ ./15227 client Getting http://gnu.org... response #< version: (1 . 1) code: 301 reason-phrase: "Moved Permanently" headers: ((date . #) (server . "Apache/2.4.7") (location . #< scheme: http userinfo: #f host: "www.gnu.org" port: #f path: "/" query: #f fragment: #f>) (content-length . 290) (connection close) (content-type text/html (charset . "iso-8859-1"))) port: #> Getting http://fsf.org... response #< version: (1 . 0) code: 301 reason-phrase: "Moved Permanently" headers: ((server . "nginx/1.1.19") (date . #) (content-type text/html) (content-length . 185) (location . #< scheme: http userinfo: #f host: "www.fsf.org" port: #f path: "/" query: #f fragment: #f>) (x-cache . "MISS from www.fsforg") (x-cache-lookup . "MISS from www.fsforg:80") (via "1.0 www.fsforg (squid/3.1.19)") (connection close)) port: #> Getting http://localhost:8080... response #< version: (1 . 1) code: 200 reason-phrase: "OK" headers: ((content-length . 14) (content-type text/plain (charset . "utf-8"))) port: #> Getting http://localhost:8080... response #< version: (1 . 1) code: 200 reason-phrase: "OK" headers: ((content-length . 14) (content-type text/plain (charset . "utf-8"))) port: #> mwette$ uname -a Darwin nautilus 16.5.0 Darwin Kernel Version 16.5.0: Fri Mar 3 16:52:33 PST 2017; root:xnu-3789.51.2~3/RELEASE_X86_64 x86_64 mwette$ guile22 --version guile (GNU Guile) 2.2.0 Copyright (C) 2017 Free Software Foundation, Inc. License LGPLv3+: GNU LGPL 3 or later . This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law.