try new enqueue operation
new promise structure
refactoring Covenant, Core and Promise; add .promise