Pushes completion to this and b unless either done. Caller should first check that result and b.result are both null.
See Implementation
Pushes completion to this and b unless either done. Caller should first check that result and b.result are both null.