За основу брал EventEmitter с nodejs пакета events. Поглядывал на api
- GetMaxListeners
- SetMaxListeners
- Once
- On
- EventNames
- ListenerCount
- RemoveAllListeners
- RemoveListener
- Emit
- NewEventEmitter
- AddListener
На реализацию промиса стоит смотреть лишь с ознакомительной точки зрения. У меня стояла задача окончательно разобраться как под капотом работает промис, и попутно сделать свою реализацию на Golang. По скольку в го используются рутины и каналы для достижения конкурентности,а асинхронности, как таковой нет, вышло громоздкая обертка над стандартными средствами и особого смысла использовать эту обертку нет :)