if you return make sure to return the promises at each level then the error should propagate to the last function meaning this should be the only catch you actually need.  Not having to defensively catch errors at every level is one of the benefits of promises.