# QPromise::tapFail
Since: 0.4.0
QPromise<T>::tapFail(Function handler) -> QPromise<T>
This handler allows to observe errors of the input promise without handling them - similar to
finally but only called on rejections. The output promise has the same type
as the input one but also the same value or error. However, if handler throws, output is
rejected with the new exception.
QPromise<int> input = {...}
auto output = input.tapFail([](const Error& error) {
log(error);
}).then([](int res) {
return process(res);
}).fail([](const Error& error) {
handle(error);
return -1;
});
If handler returns a promise (or QFuture), the output promise is delayed until the returned
promise is resolved and under the same conditions: the delayed value is ignored, the error
transmitted to the output promise.