Guys,
after severals days headache, confusing and depressing, we figured it out!
this intermittent issue is due to how we(the integrator) use the hosted form, that is render hosted form too earlier cause listener not registered.
inside the hosted form
<div _ngcontent-c0="" class="iFrameClass" id="divIframeCommunicator"></div> is not fully rendered.
<div _ngcontent-c0="" class="iFrameClass" id="divIframeCommunicator"><iframe src="your_site_url" name="ifrmCommunicator" id="ifrmCommunicator"></iframe></div> the correctly one.
the symptom is unable to receiveMessage but location.hash give truncated JSON like "#action=transactResponse&response={"
also noticed their demo page in doc is a button to trigger post form token, where is an implied delay.
when realized this the solution is simple, instead of do $("#send_token").submit(); in .ready() but do it in setTimeout with 1-2 seconds delay.
now the hosted iframe working perfectly under Firefox, Chrome, Edge, IE11 and Opera
From avetticommerce