diff --git a/go/httputils/BUILD.bazel b/go/httputils/BUILD.bazel
index 08a3356..009b937 100644
--- a/go/httputils/BUILD.bazel
+++ b/go/httputils/BUILD.bazel
@@ -8,6 +8,7 @@
     visibility = ["//visibility:public"],
     deps = [
         "//go/metrics2",
+        "//go/skerr",
         "//go/sklog",
         "//go/timer",
         "//go/util",
diff --git a/go/httputils/http.go b/go/httputils/http.go
index 7b457d3..9d36ad9 100644
--- a/go/httputils/http.go
+++ b/go/httputils/http.go
@@ -6,7 +6,6 @@
 	"errors"
 	"fmt"
 	"io"
-	"io/ioutil"
 	"net"
 	"net/http"
 	"net/url"
@@ -20,6 +19,7 @@
 	"golang.org/x/oauth2"
 
 	"go.skia.org/infra/go/metrics2"
+	"go.skia.org/infra/go/skerr"
 	"go.skia.org/infra/go/sklog"
 	"go.skia.org/infra/go/timer"
 	"go.skia.org/infra/go/util"
@@ -243,7 +243,7 @@
 func (t Response2xxOnlyTransport) RoundTrip(req *http.Request) (*http.Response, error) {
 	resp, err := t.RoundTripper.RoundTrip(req)
 	if err == nil && resp != nil && (resp.StatusCode < 200 || resp.StatusCode > 299) {
-		return nil, fmt.Errorf("Got error response status code %d from the HTTP %s request to %s\nResponse: %s", resp.StatusCode, req.Method, req.URL, ReadAndClose(resp.Body))
+		return nil, skerr.Fmt("Got error response status code %d from the HTTP %s request to %s\nResponse: %s", resp.StatusCode, req.Method, req.URL, ReadAndClose(resp.Body))
 	}
 	return resp, err
 }
@@ -271,7 +271,7 @@
 func (t Response2xxAnd3xxTransport) RoundTrip(req *http.Request) (*http.Response, error) {
 	resp, err := t.RoundTripper.RoundTrip(req)
 	if err == nil && resp != nil && (resp.StatusCode < 200 || resp.StatusCode > 399) {
-		return nil, fmt.Errorf("Got error response status code %d from the HTTP %s request to %s\nResponse: %s", resp.StatusCode, req.Method, req.URL, ReadAndClose(resp.Body))
+		return nil, skerr.Fmt("Got error response status code %d from the HTTP %s request to %s\nResponse: %s", resp.StatusCode, req.Method, req.URL, ReadAndClose(resp.Body))
 	}
 	return resp, err
 }
@@ -359,7 +359,7 @@
 	bodyBuf := bytes.Buffer{}
 	if req.Body != nil {
 		if _, err := bodyBuf.ReadFrom(req.Body); err != nil {
-			return nil, fmt.Errorf("Failed to read request body: %v", err)
+			return nil, skerr.Wrapf(err, "Failed to read request body")
 		}
 	}
 
@@ -367,7 +367,7 @@
 	var err error
 	roundTripOp := func() error {
 		if req.Body != nil {
-			req.Body = ioutil.NopCloser(bytes.NewBufferString(bodyBuf.String()))
+			req.Body = io.NopCloser(bytes.NewBufferString(bodyBuf.String()))
 		}
 		if resp != nil {
 			panic("Expected notifyFunc to be called between retries.")
@@ -425,7 +425,7 @@
 func ReadAndClose(r io.ReadCloser) string {
 	if r != nil {
 		defer util.Close(r)
-		if b, err := ioutil.ReadAll(io.LimitReader(r, MAX_BYTES_IN_RESPONSE_BODY)); err != nil {
+		if b, err := io.ReadAll(io.LimitReader(r, MAX_BYTES_IN_RESPONSE_BODY)); err != nil {
 			sklog.Warningf("There was a potential problem reading the response body: %s", err)
 		} else {
 			return fmt.Sprintf("%q", string(b))
@@ -557,7 +557,7 @@
 	} else {
 		val, err = strconv.Atoi(valStr)
 		if err != nil {
-			return 0, fmt.Errorf("Not a valid integer value.")
+			return 0, skerr.Wrapf(err, "Not a valid integer value %q.", valStr)
 		}
 	}
 	if val < 0 {
