Should execute block to take the result T, but may return failure in case when something went wrong. This method should never throw any Exception