write a helper for the js.Object.Call + recover pattern
move event related code to own file
add Data attribute to MessageEvent