velodrome/transform/plugins/fake_open_wrapper.go
func (o *FakeOpenPluginWrapper) ReceiveIssueEvent(event sql.IssueEvent) []Point {
	points := []Point{}

	// Inject extra "opened" events. Inject "opened" before other events at the same time.
	for o.openEvents.Len() > 0 && !o.openEvents[0].EventCreatedAt.After(event.EventCreatedAt) {
		points = append(points, o.plugin.ReceiveIssueEvent(heap.Pop(&o.openEvents).(sql.IssueEvent))...)
	}

	return append(points, o.plugin.ReceiveIssueEvent(event)...)
}
func (o *FakeOpenPluginWrapper) ReceiveIssueEvent(event sql.IssueEvent) []Point {
	points := []Point{}

	// Inject extra "opened" events. Inject "opened" before other events at the same time.
	for o.openEvents.Len() > 0 && !o.openEvents[0].EventCreatedAt.After(event.EventCreatedAt) {
		points = append(points, o.plugin.ReceiveIssueEvent(heap.Pop(&o.openEvents).(sql.IssueEvent))...)
	}

	return append(points, o.plugin.ReceiveIssueEvent(event)...)
}
// ReceiveIssueEvent injects an extra "opened" event before calling plugin.ReceiveIssueEvent()