code: func (r *reader) waitAvailable(pos, wanted int64, ctxErr *error) (avail int64) {
  	r.t.cl.lock()
  	defer r.t.cl.unlock()
  	for !r.readable(pos) && *ctxErr == nil {
  		r.waitReadable(pos)
  	}
  	return r.available(pos, wanted)
  }
docs: // Wait until some data should be available to read. Tickles the client if it
  // isn't. Returns how much should be readable without blocking.