diff --git a/vendor/cmd/go/internal/modfetch/domain.go b/vendor/cmd/go/internal/modfetch/domain.go
index 6e7b327..2494f80 100644
--- a/vendor/cmd/go/internal/modfetch/domain.go
+++ b/vendor/cmd/go/internal/modfetch/domain.go
@@ -16,7 +16,6 @@
 
 	"cmd/go/internal/modfetch/codehost"
 	"cmd/go/internal/modfetch/gitrepo"
-	web "cmd/go/internal/web2"
 )
 
 // metaImport represents the parsed <meta name="go-import"
@@ -34,11 +33,7 @@
 		return nil, fmt.Errorf("unknown module %s: not a domain name", path)
 	}
 	var body io.ReadCloser
-	err := web.Get(
-		"https://"+path+"?go-get=1",
-		web.Non200OK(),
-		web.Body(&body),
-	)
+	err := webGetGoGet("https://"+path+"?go-get=1", &body)
 	if body != nil {
 		defer body.Close()
 	}
diff --git a/vendor/cmd/go/internal/modfetch/noweb.go b/vendor/cmd/go/internal/modfetch/noweb.go
new file mode 100644
index 0000000..9d713dc
--- /dev/null
+++ b/vendor/cmd/go/internal/modfetch/noweb.go
@@ -0,0 +1,24 @@
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build cmd_go_bootstrap
+
+package modfetch
+
+import (
+	"fmt"
+	"io"
+)
+
+func webGetGoGet(url string, body *io.ReadCloser) error {
+	return fmt.Errorf("no network in go_bootstrap")
+}
+
+func webGetBytes(url string, body *[]byte) error {
+	return fmt.Errorf("no network in go_bootstrap")
+}
+
+func webGetBody(url string, body *io.ReadCloser) error {
+	return fmt.Errorf("no network in go_bootstrap")
+}
diff --git a/vendor/cmd/go/internal/modfetch/proxy.go b/vendor/cmd/go/internal/modfetch/proxy.go
index 089883d..419323b 100644
--- a/vendor/cmd/go/internal/modfetch/proxy.go
+++ b/vendor/cmd/go/internal/modfetch/proxy.go
@@ -16,7 +16,6 @@
 
 	"cmd/go/internal/modfetch/codehost"
 	"cmd/go/internal/semver"
-	web "cmd/go/internal/web2"
 )
 
 var proxyURL = os.Getenv("GOPROXY")
@@ -45,7 +44,7 @@
 
 func (p *proxyRepo) Versions(prefix string) ([]string, error) {
 	var data []byte
-	err := web.Get(p.url+"/@v/list", web.ReadAllBody(&data))
+	err := webGetBytes(p.url+"/@v/list", &data)
 	if err != nil {
 		return nil, err
 	}
@@ -61,7 +60,7 @@
 
 func (p *proxyRepo) latest() (*RevInfo, error) {
 	var data []byte
-	err := web.Get(p.url+"/@v/list", web.ReadAllBody(&data))
+	err := webGetBytes(p.url+"/@v/list", &data)
 	if err != nil {
 		return nil, err
 	}
@@ -91,7 +90,7 @@
 
 func (p *proxyRepo) Stat(rev string) (*RevInfo, error) {
 	var data []byte
-	err := web.Get(p.url+"/@v/"+pathEscape(rev)+".info", web.ReadAllBody(&data))
+	err := webGetBytes(p.url+"/@v/"+pathEscape(rev)+".info", &data)
 	if err != nil {
 		return nil, err
 	}
@@ -105,7 +104,7 @@
 func (p *proxyRepo) Latest() (*RevInfo, error) {
 	var data []byte
 	u := p.url + "/@latest"
-	err := web.Get(u, web.ReadAllBody(&data))
+	err := webGetBytes(u, &data)
 	if err != nil {
 		// TODO return err if not 404
 		return p.latest()
@@ -119,7 +118,7 @@
 
 func (p *proxyRepo) GoMod(version string) ([]byte, error) {
 	var data []byte
-	err := web.Get(p.url+"/@v/"+pathEscape(version)+".mod", web.ReadAllBody(&data))
+	err := webGetBytes(p.url+"/@v/"+pathEscape(version)+".mod", &data)
 	if err != nil {
 		return nil, err
 	}
@@ -128,7 +127,7 @@
 
 func (p *proxyRepo) Zip(version string, tmpdir string) (tmpfile string, err error) {
 	var body io.ReadCloser
-	err = web.Get(p.url+"/@v/"+pathEscape(version)+".zip", web.Body(&body))
+	err = webGetBody(p.url+"/@v/"+pathEscape(version)+".zip", &body)
 	if err != nil {
 		return "", err
 	}
diff --git a/vendor/cmd/go/internal/modfetch/web.go b/vendor/cmd/go/internal/modfetch/web.go
new file mode 100644
index 0000000..b327bf2
--- /dev/null
+++ b/vendor/cmd/go/internal/modfetch/web.go
@@ -0,0 +1,31 @@
+// Copyright 2018 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build !cmd_go_bootstrap
+
+package modfetch
+
+import (
+	"io"
+
+	web "cmd/go/internal/web2"
+)
+
+// webGetGoGet fetches a go-get=1 URL and returns the body in *body.
+// It allows non-200 responses, as usual for these URLs.
+func webGetGoGet(url string, body *io.ReadCloser) error {
+	return web.Get(url, web.Non200OK(), web.Body(body))
+}
+
+// webGetBytes returns the body returned by an HTTP GET, as a []byte.
+// It insists on a 200 response.
+func webGetBytes(url string, body *[]byte) error {
+	return web.Get(url, web.ReadAllBody(body))
+}
+
+// webGetBody returns the body returned by an HTTP GET, as a io.ReadCloser.
+// It insists on a 200 response.
+func webGetBody(url string, body *io.ReadCloser) error {
+	return web.Get(url, web.Body(body))
+}
