Yep, that sounds good to me. This is an API breaking change, so I'm gonna do it in a separate PR and increment the major version.

I don't think we ever assume the error comes through the return value, since that behavior was changed a long time ago. The current implementation never puts any returned values from the function in the error arg position of the callback.