RxJs async requests pick random user

HTML

<script src="https://cdnjs.cloudflare.com/ajax/libs/rxjs/4.1.0/rx.all.js"></script>
<h1>
 Players Ready for a session of iDart!!
</h1>
<section class="players">
</section>
<button class="load-more">
load more
</button>

CSS

.players div{
  margin: 10px;
  padding: 10px;
  width: 200px;
  background-color: #ccc; 
}
.players a {
  display: inline-block;
  padding: 12px 5px;
}
.players img {
  width: 50px;
  display: inline-block;
  vertical-align: middle;
}

Babel + JSX

let btnLoadMore = document.querySelector('.load-more');

const always = x => _ => x
const compose = (f, g) => x => f(g(x))
const toUrl = always('https://api.github.com/users')
const ajax = compose(Rx.Observable.fromPromise, fetch)
let randomPlayer$ = Rx.Observable
  .fromEvent(btnLoadMore, 'click')
  .map(toUrl)
  .startWith(toUrl())
  .flatMap(ajax)
  .flatMap(r => Rx.Observable.fromPromise(r.json()))
  .map(pickRandomItem)

randomPlayer$.subscribe(appendPlayerToDOM)

function pickRandomItem(arr){
  var randomIndex = Math.floor(Math.random() * arr.length)
	return arr[randomIndex]
}

function toTemplate(user){
	var a = document.createElement("a")
  a.textContent = user.login
  a.href = user.html_url
  var img = document.createElement("img")
  img.src = user.avatar_url
  var div = document.createElement("div")
  div.appendChild(img)
  div.appendChild(a)
  return div;
}

function appendPlayerToDOM(u){
  var t = toTemplate(u)
  var users = document.querySelector('.players')
  users.appendChild(t)
}