The chain ID returned should always correspond to the information in the current known head block. This ensures that caller of this RPC method can always use the retrieved information to sign transactions built on top of the head.
If the current known head block does not specify a chain ID, the client should treat any calls to
eth_chainId as though the method were not supported, and return a suitable error.
You should prefer
net_version, so that you can reliably identify the chain you are communicating with.