As a note, the PromiseBridge just felt dirty to me from the beginning.

My gut says that in this case, checking null on the remove is the right thing to do, either that or check contains before doing the remove. This all (to me) follows logically from Map's contract.