diff --git a/chain.go b/chain.go
index 244ae9f5..78763d13 100644
--- a/chain.go
+++ b/chain.go
@@ -7,7 +7,7 @@ import (
 	"github.com/golang/glog"
 	"golang.org/x/net/http2"
 	"io"
-	"io/ioutil"
+	//"io/ioutil"
 	"net"
 	"net/http"
 	"net/http/httputil"
@@ -238,7 +238,7 @@ func (c *ProxyChain) getHttp2Conn(header http.Header) (net.Conn, error) {
 		Proto:         "HTTP/2.0",
 		ProtoMajor:    2,
 		ProtoMinor:    0,
-		Body:          ioutil.NopCloser(pr),
+		Body:          pr,
 		Host:          http2Node.Addr,
 		ContentLength: -1,
 	}
diff --git a/http.go b/http.go
index 073c2f29..18418eb7 100644
--- a/http.go
+++ b/http.go
@@ -311,11 +311,14 @@ func (c *http2Conn) Write(b []byte) (n int, err error) {
 	return c.w.Write(b)
 }
 
-func (c *http2Conn) Close() error {
-	if rc, ok := c.r.(io.ReadCloser); ok {
-		return rc.Close()
+func (c *http2Conn) Close() (err error) {
+	if rc, ok := c.r.(io.Closer); ok {
+		err = rc.Close()
 	}
-	return nil
+	if w, ok := c.w.(io.Closer); ok {
+		err = w.Close()
+	}
+	return
 }
 
 func (c *http2Conn) LocalAddr() net.Addr {