Preview and diff tabs render whichever response arrives last, so a slow
earlier request can overwrite the result of a newer click. Introduce
ExclusiveFetch class to handle duplicate requests.
Fixes: https://github.com/go-gitea/gitea/issues/40223
---------
Co-authored-by: wxiaoguang <wxiaoguang@gmail.com>