Simple promise library, Promises/A+ compatible