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