function engageDrawLoop(ctx, height, width, layers) {
  let drawIteration = 0;
  // using setInterval because request animation frame goes too fast
  const drawCycle = setInterval(() => {
    if (!ctx) {
      clearInterval(drawCycle);
      return;
    }
    drawLayers(ctx, height, width, layers, drawIteration);
    if (drawIteration > MAX_DRAWS) {
      clearInterval(drawCycle);
    }
    drawIteration += 1;
  }, 1);
}
Draw loop draws each of the layers until it should draw more
@param {CanvasContext} ctx - the context where the drawing will take place
@param {Number} height - height of the canvas
@param {Number} width - width of the canvas
@param {Array} layers - the layer objects to render