throw JavaScript exception instead of RuntimeExc
rework logging support: now only spy()