Pass errors to callbacks instead of throwing them

To make the behaviour consistent across the library, errors should be passed to callbacks instead of throwing them; otherwise it causes some confusion and potentially breaks error handling in other libraries that use this module.

PS. It would be great if you could also release this as a patch update on NPM. Thank you!