Catch only exceptions thrown by model[func]() (fix #454 and re #384)

Catch only exceptions thrown by model[func](), and not by d.resolvWith(). The Deferred is resolved only if model[func]() succeeds.

/re #454 and #384
/cc @daffl and @thecountofzero thanks for reviewing any comments are welcome