func (d *DefaultDeferrer) Defer(fn func()) {
	d.deferStack = append(d.deferStack, fn)
}
Pushes a function info the defer stack to run later
package deferrer
type Deferrer interface {
	Defer(fn func())
	RunDeferred()
}
type DefaultDeferrer struct {
	deferStack []func()
}