function getScrollableAncestors(element, result) {
    result = result || [];

    // Find scroll parents.
    while (element && element !== document) {
      // If element is inside ShadowDOM let's get it's host node from the real
      // DOM and continue looping.
      if (element.getRootNode && element instanceof DocumentFragment) {
        element = element.getRootNode().host;
        continue;
      }

      // If element is scrollable let's add it to the scrollable list.
      if (isScrollable(element)) {
        result.push(element);
      }

      element = element.parentNode;
    }

    // Always add window to the results.
    result.push(window);

    return result;
  }
Collect element's ancestors that are potentially scrollable elements. The
provided element is also also included in the check, meaning that if it is
scrollable it is added to the result array.

@param {HTMLElement} element
@param {Array} [result]
@returns {Array}