A gentle introduction to promises