Callbacks as optional arguments

You can now supply a callback function as an optional argument to any
implemented async function. If not supplied, the respective event will
be called instead