Issue/694

I fixed #694 with an alternative solution to #695. I also noticed some inconsistencies in error handling between sync and async and made them the same.

Thanks to @spiffytech for the very detailed bug report.