Coalesce pending asynchronous tasks

Maybe an AsyncBufferSequence with a new AsyncBufferSequencePolicy that supports coalescing?

let pendingRequests = requests.buffer(policy: .coalescing({ (existing, new) in
  return merge(existing, new)
}))

Or just a new AsyncCoalescingSequence? :thinking:

let pendingRequests = requests.coalesced { (existing, new) in
  return merge(existing, new)
}