combineCancel = (p1, p2) => {
  if (!p2) return p1
  const result = p1.then(x => x, x => x)
  result.cancel = () => {
    p1.cancel()
    p2.cancel()
  }
  return result
}
returns new "promise" with cancel function combined

@param {Promise} p1 - first "promise" with cancel
@param {Promise} p2 - second "promise" with cancel
@returns {Promise} - new "promise" with cancel