code: function step (context) {
    // call method again on next available frame
    context.frame = window.requestAnimationFrame(step.bind(window, context))
    const time = now()
    let elapsed = (time - context.startTime) / 468
    // avoid elapsed times higher than one
    elapsed = elapsed > 1 ? 1 : elapsed
    // apply easing to elapsed time
    const value = ease(elapsed)
    const currentPosition = context.startPosition + (context.position - context.startPosition) * value
    context.method.call(context.scrollable, context.dSuffix, currentPosition)
    // return when end points have been reached
    /**
      * NOTE: should use ~~ to parse position number into integer. Otherwise
      * this two float numbers maybe have a slicely little difference, which
      * will cause this function never to stop.
    */
    if (~~currentPosition === ~~context.position) {
      window.cancelAnimationFrame(context.frame)
      return
    }
  }
docs: self invoked function that, given a context, steps through scrolling
  @method step
  @param {Object} context