code: func (ec *EthereumClient) SubscribeNewHead(ctx *Context, handler NewHeadHandler, buffer int) (sub *Subscription, _ error) {
  	// Subscribe to the event internally
  	ch := make(chan *types.Header, buffer)
  	rawSub, err := ec.client.SubscribeNewHead(ctx.context, ch)
  	if err != nil {
  		return nil, err
  	}
  	// Start up a dispatcher to feed into the callback
  	go func() {
  		for {
  			select {
  			case header := <-ch:
  				handler.OnNewHead(&Header{header})
  
  			case err := <-rawSub.Err():
  				if err != nil {
  					handler.OnError(err.Error())
  				}
  				return
  			}
  		}
  	}()
  	return &Subscription{rawSub}, nil
  }
docs: // SubscribeNewHead subscribes to notifications about the current blockchain head
  // on the given channel.