new Query(options)
key: hashed cache keyfetch(queryKey, signal?): runs the query function with{ signal, queryKey }isStale(lastUpdated): compares an entry timestamp againststaleTime
const query = new Query({
queryKey: ['user', userId] as const,
queryFn: ({ signal, queryKey: [, id] }) => fetchUser(id, signal)
});
query.key; // hashed cache key
await query.fetch(['user', userId] as const);