If these producer-consumer methods are meant to be used by several teams, I would be cautious about letting consumers handle the type assertions. There are quite a few ways to go
around this, such as with the use of tagged interfaces, but a lot of those strategies don't necessarily adhere to the go-way of doing things. Instead, they're aimed at having a reliable implementation that is less prone to being misused.