JS Client changes: Gracefully return null if key is not found in bucket (instead of throwing) Support single and multi-key lookups in a unified privateRead function