postMessage instead of events; function marshaling via source
assert and fail goes to bot