Add promise catch

* Uses Try::Tiny to catch exception on ->recv
* Turns into object for tracking fulfillment/rejection