Rework the DefaulPromise to eliminate race reported as [#2157]

This also remove some more synchronization and make heavy use of atomic operations now. The downside is that it creates more objects when FutureListeners are added. But this was the only performant way I could find to still make sure the order is correct while still not do heavy synchronization.