function check() {
            if ((widthA != -1 && widthB != -1) || (widthA != -1 && widthC != -1) || (widthB != -1 && widthC != -1)) {
              if (widthA == widthB || widthA == widthC || widthB == widthC) {
                // All values are the same, so the browser has most likely loaded the web font

                if (Observer.hasWebKitFallbackBug()) {
                  // Except if the browser has the WebKit fallback bug, in which case we check to see if all
                  // values are set to one of the last resort fonts.

                  if (((widthA == fallbackWidthA && widthB == fallbackWidthA && widthC == fallbackWidthA) ||
                        (widthA == fallbackWidthB && widthB == fallbackWidthB && widthC == fallbackWidthB) ||
                        (widthA == fallbackWidthC && widthB == fallbackWidthC && widthC == fallbackWidthC))) {
                    // The width we got matches some of the known last resort fonts, so let's assume we're dealing with the last resort font.
                    return;
                  }
                }
                removeContainer();
                clearTimeout(timeoutId);
                resolve(that);
              }
            }
          }
@private

If metric compatible fonts are detected, one of the widths will be -1. This is
because a metric compatible font won't trigger a scroll event. We work around
this by considering a font loaded if at least two of the widths are the same.
Because we have three widths, this still prevents false positives.

Cases:
1) Font loads: both a, b and c are called and have the same value.
2) Font fails to load: resize callback is never called and timeout happens.
3) WebKit bug: both a, b and c are called and have the same value, but the
   values are equal to one of the last resort fonts, we ignore this and
   continue waiting until we get new values (or a timeout).