code: func (s *Service) RegisterBlockEvent(filter ...fab.BlockFilter) (fab.Registration, <-chan *fab.BlockEvent, error) {
  	eventch := make(chan *fab.BlockEvent, s.eventConsumerBufferSize)
  	regch := make(chan fab.Registration)
  	errch := make(chan error)
  
  	blockFilter := blockfilter.AcceptAny
  	if len(filter) > 1 {
  		return nil, nil, errors.New("only one block filter may be specified")
  	}
  
  	if len(filter) == 1 {
  		blockFilter = filter[0]
  	}
  
  	if err := s.Submit(dispatcher.NewRegisterBlockEvent(blockFilter, eventch, regch, errch)); err != nil {
  		return nil, nil, errors.WithMessage(err, "error registering for block events")
  	}
  
  	select {
  	case response := <-regch:
  		return response, eventch, nil
  	case err := <-errch:
  		return nil, nil, err
  	}
  }
docs: // RegisterBlockEvent registers for block events. If the client is not authorized to receive
  // block events then an error is returned.