service caching & native promise; adv opts