The catch function is supposed to return a new promise type too, so you can chain it with a then, so I think it should be `catchFn:(e:Error) => Promise<T>`