map function only called on success, propagate errors through map chain