copied from https://github.com/tailscale/tailscale/blob/main/util/singleflight/singleflight.go which is originally derived from golang.org/x/sync.
In the future, would be nice for this package to support "context" as well, see tailscale/tailscale#6981