Get the current state of a thread.
Returns None when the thread does not exist on the server (404).
All other errors (network, auth, 500) are logged at WARNING and
re-raised so callers can handle them.
Unlike astream, message values are not deserialized; callers may
receive serialized message dicts in values["messages"] from the
server.