DefaultPromise does notify Listeners in wrong order

This pull-req is not complete yet but show a race in DefaultPromise which can lead to have FutureListener notified in a wrong order. 

One way to fix this is to enlarge the scope of the synchronization but I would like to think about some better way to fix it.