diff --git a/src/net/lookup_unix.go b/src/net/lookup_unix.go
index 382a2d44bb5cfdbc58a53b121875b98e7c7f28e7..7416cb01f80efe7aa161b7164412ec7e85e2201e 100644
--- a/src/net/lookup_unix.go
+++ b/src/net/lookup_unix.go
@@ -12,11 +12,9 @@ import (
 	"sync"
 )
 
-var onceReadProtocols sync.Once
-
-// readProtocols loads contents of /etc/protocols into protocols map
+// readProtocolsOnce loads contents of /etc/protocols into protocols map
 // for quick access.
-func readProtocols() {
+var readProtocolsOnce = sync.OnceFunc(func() {
 	file, err := open("/etc/protocols")
 	if err != nil {
 		return
@@ -43,12 +41,12 @@ func readProtocols() {
 			}
 		}
 	}
-}
+})
 
 // lookupProtocol looks up IP protocol name in /etc/protocols and
 // returns correspondent protocol number.
 func lookupProtocol(_ context.Context, name string) (int, error) {
-	onceReadProtocols.Do(readProtocols)
+	readProtocolsOnce()
 	return lookupProtocolMap(name)
 }