emit takes callback