How would you structure a networking layer to handle API rate limiting, token expiration, and offline caching gracefully in UST mobile projects?