Cache system using promise