JSFiddle - React, Tailwind, and code Playground

HTML

<script src="https://cdnjs.cloudflare.com/ajax/libs/co/4.1.0/index.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/mootools/1.5.2/mootools-core.min.js"></script>
<div id='target'>
</div>

CSS

body {
      font-family: Helvetica, Sans, Arial;
    }
    
    p {
      display: block;
    }

JavaScript

function get(text, delay) {
  return new Promise(function(resolve, reject) {
    var request = new Request.HTML({
      url: '/echo/html/',
      data: {
        html: text,
        delay: delay
      },
      method: 'post',
      onSuccess: function(data) {
        resolve(data);
      },
      onFailure: function() {
        reject();
      }
    });
    request.send();
  });
}

var chapterStrs = [
  'chapter1',
  'chapter2',
  'chapter3',
  'chapter4',
  'chapter5',
  'chapter6',
  'chapter7',
  'chapter8',
  'chapter9',
  'chapter10',
];

var getChapter = function(chapterStr) {
  return get('<p>' + chapterStr + '</p>', Math.round(Math.random() * 2));
};

var addToPage = function(data) {
  data[0].inject($('target'));
}

function *gen(){
  var charperPromises = chapterStrs.map(getChapter);
  for(var i=0;i<charperPromises.length;i++){
		addToPage(yield charperPromises[i]);
	}
}

co(gen);