Build Your Own Promise Library - Part 2

We continue building out our little promise library, this time adding an ensure method, refactoring how we call the callback blocks, and fix a race condition issue by triggering callbacks even if the value has already been provided.

This is a companion discussion topic for the original entry at