diff --git a/4-ajax/14-fetch/article.md b/4-ajax/14-fetch/article.md
new file mode 100644
index 00000000..69e95186
--- /dev/null
+++ b/4-ajax/14-fetch/article.md
@@ -0,0 +1,80 @@
+
+# Метод fetch: замена XMLHttpRequest
+
+Метод [fetch](https://fetch.spec.whatwg.org/) -- это `XMLHttpRequest` нового поколения. Он предоставляет улучшенный интерфейс для осуществления запросов к серверу: как по части возможностей и контроля над происходящим, так и по синтаксису, так как построен на [промисах](/promise).
+
+Поддержка в браузерах пока не очень распространена, но есть [полифилл](https://github.com/github/fetch) и не один.
+
+## Синтаксис
+
+Синтаксис метода `fetch`:
+```js
+let promise = fetch(url[, options]);
+```
+
+
+- `url` -- URL, на который сделать запрос,
+- `options` -- необязательный объект с настройками запроса.
+
+
+Свойства `options`:
+
+- `method` -- метод запроса,
+- `headers` -- заголовки запроса (объект),
+- `body` -- тело запроса: `FormData`, `Blob`, строка и т.п.
+- `mode` -- одно из: "same-origin", "no-cors", "cors", указывает режим в каком режиме кросс-доменности предполагается делать запрос.
+- `credentials` -- одно из: "omit", "same-origin", "include", указывает, пересылать ли куки и заголовки авторизации вместе с запросом.
+- `cache` -- одно из "default", "no-store", "reload", "no-cache", "force-cache", "only-if-cached", указывает, как кешировать запрос.
+- `redirect` -- можно поставить "follow" для обычного поведения при коде 30x (следовать редиректу) или "error" для интерпретации редиректа как ошибки.
+
+
+Как видно, всевозможных настроек здесь больше, чем в `XMLHttpRequest`. Вместе с тем, надо понимать, что если мы используем полифилл, то ничего более гибкого, чем оригинальный `XMLHttpRequest` мы из этого не получим.
+
+Разве что, `fetch`, возможно, будет удобнее пользоваться.
+
+## Использование
+
+При вызове `fetch` возвращает промис, который, когда получен ответ, выполняет коллбэки с объектом [Response](https://fetch.spec.whatwg.org/#response) или с ошибкой, если запрос не удался.
+
+Пример использования:
+
+```js
+//+ run
+'use strict';
+
+fetch('/article/fetch/user.json')
+ .then(function(response) {
+ alert(response.headers.get('Content-Type')); // application/json; charset=utf-8
+ alert(response.status); // 200
+
+ return response.json();
+ })
+ .then(function(user) {
+ alert(user.name); // iliakan
+ })
+ .catch( alert );
+```
+
+Объект `response` кроме доступа к заголовкам `headers`, статусу `status` и некоторым другим полям ответа, даёт возможность прочитать его тело, в желаемом формате.
+
+Варианты описаны в спецификации [Body](https://fetch.spec.whatwg.org/#body), они включают в себя:
+
+
+- `response.arrayBuffer()`
+- `response.blob()`
+- `response.formData()`
+- `response.json()`
+- `response.text()`
+
+
+Соответствующий вызов возвращает промис, который, когда ответ будет получен, вызовет коллбэк с результатом.
+
+В примере выше мы можем в первом `.then` проанализировать ответ и, если он нас устроит -- вернуть промис с нужным форматом. Следующий `.then` уже будет содержать полный ответ сервера.
+
+Больше примеров вы можете найти в описании [полифилла для fetch](https://github.com/github/fetch).
+
+## Итого
+
+Метод `fetch` -- уже сейчас удобная альтернатива `XMLHttpRequest` для тех, кто не хочет ждать и любит промисы.
+
+Детальное описание этого метода есть в стандарте [Fetch](https://fetch.spec.whatwg.org/), а простейшие примеры запросов -- в описании к [полифиллу](https://github.com/github/fetch).
\ No newline at end of file
diff --git a/4-ajax/14-fetch/user.js b/4-ajax/14-fetch/user.js
new file mode 100644
index 00000000..32f89971
--- /dev/null
+++ b/4-ajax/14-fetch/user.js
@@ -0,0 +1,4 @@
+{
+ "name": "iliakan",
+ "isAdmin": true
+}
diff --git a/4-ajax/15-ajax-summary/article.md b/4-ajax/15-ajax-summary/article.md
new file mode 100644
index 00000000..61868ba5
--- /dev/null
+++ b/4-ajax/15-ajax-summary/article.md
@@ -0,0 +1,109 @@
+# Таблица транспортов и их возможностей
+
+Здесь мы подведём итог раздела, сравним транспорты и их возможности.
+[cut]
+
+## Способы опроса сервера
+
+Основные способы опроса сервера:
+
+- **Частые опросы** -- регулярно к серверу отправляется запрос за данными. Сервер тут же отвечает на него, возвращая данные, если они есть. Если нет -- получается, что запрос был зря.
+
+Этот способ очень лёгок в реализации, но приводит к большому количеству лишних запросов, поэтому мы его далее не рассматриваем.
+
+- **Длинные опросы** -- к серверу отправляется запрос за данными. Сервер не отвечает на него, пока данные не появятся. Когда данные появились -- ответ с ними отправляется в браузер, и тот тут же делает новый запрос.
+
+Способ хорош, пока сообщений не слишком много. В идеальном случае соединение почти всё время висит открытым, лишь иногда сервер отвечает на него, доставляя данные в браузер.
+
+Также удобен в реализации, но даёт большое количество висящий соединений на сервере. Не все сервера хорошо поддерживают это. Например, `Apache` будет есть очень много памяти.
+
+- **Потоковое соединение** -- открыто соединение к серверу, и через него непрерывно поступают данные.
+
+
+## Таблица транспортов
+Основные характеристики всех транспортов, которые мы обсуждали в деталях, собраны в этой таблице.
+
+Они были детально рассмотрены в предыдущих главах раздела.
+
+
+
+
+ |
+`XMLHttpRequest` |
+`IFRAME` |
+`SCRIPT` |
+`EventSource` |
+`WebSocket` |
+
+
+
+
+Кросс-доменность |
+да, кроме IE9-x1 |
+даi1 |
+да |
+да |
+да |
+
+
+Методы |
+Любые |
+GET / POST |
+GET |
+GET |
+Свой протокол |
+
+
+COMET |
+Длинные опросыx2 |
+Непрерывное соединение |
+Длинные опросы |
+Непрерывное соединение |
+Непрерывное соединение в обе стороны |
+
+
+Поддержка |
+Все браузеры, ограничения в IE9-x3 |
+Все браузеры |
+Все браузеры |
+Кроме IE |
+IE 10, FF11, Chrome 16, Safari 6, Opera 12.5w1 |
+
+
+
+
+Пояснения:
+
+
+- `XMLHttpRequest`
+-
+
+- В IE8-9 поддерживаются кросс-доменные GET/POST запросы с ограничениями через `XDomainRequest`.
+- Можно говорить об ограниченной поддержке непрерывного соединения через `onprogress`, но это событие вызывается не чаще чем в `50ms` и не гарантирует получение полного пакета данных. Например, сервер может записать "Привет!", а событие вызовется один раз, когда браузер получил "При". Поэтому наладить обмен пакетами сообщений с его помощью затруднительно.
+
+- Многие возможности современного стандарта включены в IE лишь с версии 10.
+
+
+- `IFRAME`
+-
+
+- Во всех современных браузерах и IE8 кросс-доменность обеспечивает `postMessage`. В более старых браузерах возможны решения через `window.name` и хэш.
+
+
+- `WebSocket`
+-
+
+- Имеется в виду поддержка окончательной редакции протокола [RFC 6455](http://tools.ietf.org/html/rfc6455), описанной в разделе [](/websockets). Более старые браузеры могут поддерживать черновики протокола. IE9- не поддерживает `WebSocket`.
+
+
+
+
+Существует также нестандартный транспорт, не рассмотренный здесь:
+
+- XMLHttpRequest с флагом `multipart`, только для Firefox.
+
+При указании свойства `xhr.multipart = true` и специального multipart-формата ответа сервера, Firefox инициирует `onload` при получении очередной части ответа. Ответ может состоять из любого количества частей, досылаемых по инициативе сервера. Мы не рассматривали его, так как Firefox поддерживает другие, более кросс-браузерные и стандартные транспорты.
+
+
+
+В современных браузерах поддерживается новый метод [fetch](/fetch), в качестве замены XMLHttpRequest ([полифилл](https://github.com/github/fetch)).