code: func (rt *RoundTripper) RoundTrip(r *http.Request) (*http.Response, error) {
  	addr := r.Host
  	if addr == "" {
  		addr = r.URL.Host
  	}
  
  	pid, err := peer.IDB58Decode(addr)
  	if err != nil {
  		return nil, err
  	}
  
  	conn, err := gostream.Dial(rt.h, peer.ID(pid), rt.opts.Protocol)
  	if err != nil {
  		if r.Body != nil {
  			r.Body.Close()
  		}
  		return nil, err
  	}
  
  	// Write the request while reading the response
  	go func() {
  		err := r.Write(conn)
  		if err != nil {
  			conn.Close()
  		}
  		if r.Body != nil {
  			r.Body.Close()
  		}
  	}()
  
  	resp, err := http.ReadResponse(bufio.NewReader(conn), r)
  	if err != nil {
  		return resp, err
  	}
  
  	resp.Body = &respBody{
  		ReadCloser: resp.Body,
  		conn:       conn,
  	}
  
  	return resp, nil
  }
docs: // RoundTrip executes a single HTTP transaction, returning
  // a Response for the provided Request.