fix on() off() context param bug, add coverage