const resolve = this.async();
const { isViolation, timeout } = Object.assign(
	{ isViolation: false, timeout: 500 },
	options
);

// give the frame .5s to respond to 'axe.ping', else log failed response
let timer = setTimeout(function() {
	// This double timeout is important for allowing iframes to respond
	// DO NOT REMOVE
	timer = setTimeout(function() {
		timer = null;
		resolve(isViolation ? false : undefined);
	}, 0);
}, timeout);

axe.utils.respondable(
	node.contentWindow,
	'axe.ping',
	null,
	undefined,
	function() {
		if (timer !== null) {
			clearTimeout(timer);
			resolve(true);
		}
	}
);
