I've noticed a strange thing in Go while doing some benchmarks compared to C. In Go, when under load testing, I see the client send a FIN to close the connection, but it can take up to 200ms for the Go implementation to send back it's FIN. I don't see this in the C side. I've tested several implementations now, and dug through the Go source to try and figure out where this is controlled.
As far as I can tell, there doesn't seem to be anything deliberately handling this behavior, unless it is under the handling of idle connections.
Does anyone have any ideas of where to look that deep in the stack?