вешаешь на каждую маленькую картинку click() и реплейсишь урл большой картинки на урл маленькой (либо на другой, если small/large картинки отдельно валяются)
Алексей Бугаев, при чем здесь слова, человек вам ошибку вашу указал) Консоль дала исчерпывающий ответ: b is not a function, потому что вы написали var b = f(); и в b теперь лежит результат выполнения функции f, т. е. значение переменной a, а не функция
здесь
выброс ручками промиса в фетч не дает возможности прервать запрос, он будет выполнен в любом случае, можно потыкать в сторону AbortController, если не волнует поддержка IE