Race-condition in Concurrent.Promise()->finalise()
Callbacks may get lost due to a race condition.
sequenceDiagram
participant T1 as Thread 1
participant P as Promise
participant T2 as Thread 2
T2->>P: success()
Note right of P: success_cbs read.
T1->>P: on_success()
activate P
Note right of P: success_cbs updated.
P->>T1: returns
deactivate P
T2->>P: success() calls finalise()
activate P
Note right of P: Old success_cbs called.
Note right of P: success_cbs cleared.
P->>T2: returns
deactivate P
Note right of P: The callback installed by Thread 1 has been lost.