+str #15996 Add unorderedMapAsync

* rename mapFuture to mapAsync
* add unorderedMapAsync
* extract common things for emits to a trait

I'm not sure about the name `unorderedMapAsync`. Any better suggestions?

Refs #15996
No I just wondered what happens if emits is not yet empty when you overwrite it in the above line. Maybe this cannot happen in your code, I just couldn't figure out why.