Cross-browser events and checks for Promise support