Interface design
While designing API make sure to take special care of how users of API can communicate errors back to you.
In general it’s a #fail to provide user with multiple options of communicating failure to you.
For example I made it possible to user to return false or throw exception to say something went wrong.
Week after I wrote it I got confused by this code.