func (bus *EventBus) doSubscribe(topic string, fn interface{}, handler *eventHandler) error {
	bus.lock.Lock()
	defer bus.lock.Unlock()
	if !(reflect.TypeOf(fn).Kind() == reflect.Func) {
		return fmt.Errorf("%s is not of type reflect.Func", reflect.TypeOf(fn).Kind())
	}
	bus.handlers[topic] = append(bus.handlers[topic], handler)
	return nil
}
func (bus *EventBus) doSubscribe(topic string, fn interface{}, handler *eventHandler) error {
	bus.lock.Lock()
	defer bus.lock.Unlock()
	if !(reflect.TypeOf(fn).Kind() == reflect.Func) {
		return fmt.Errorf("%s is not of type reflect.Func", reflect.TypeOf(fn).Kind())
	}
	bus.handlers[topic] = append(bus.handlers[topic], handler)
	return nil
}
func ( bus * EventBus ) doSubscribe ( topic string , fn interface { } , handler * eventHandler ) error { bus . lock . Lock ( ) defer bus . lock . Unlock ( ) if ! ( reflect . TypeOf ( fn ) . Kind ( ) == reflect . Func ) { return fmt . Errorf ( " " , reflect . TypeOf ( fn ) . Kind ( ) ) } bus . handlers [ topic ] = append ( bus . handlers [ topic ] , handler ) return nil }
// doSubscribe handles the subscription logic and is utilized by the public Subscribe functions
doSubscribe handles the subscription logic and is utilized by the public Subscribe functions