Cleaner, more complete implementation of lazy promises
Changed to use lazybird