note about thrown exception test lying
promise is a function that returns an object with a then method