public function on($event, $callback, $priority = 0)
{
if (!isset($this->events[$event])) {
$this->events[$event] = [];
}
// make $this available in closures
if (is_object($callback) && $callback instanceof \Closure) {
$callback = $callback->bindTo($this, $this);
}
$this->events[$event][] = ["fn" => $callback, "prio" => $priority];
return $this;
}