func (r Rule) Eval(ctx context.Context, e *executor.Event, err error, ch Chain) (context.Context, *executor.Event, error) {
	if r != nil {
		return r(ctx, e, err, ch)
	}
	return ch(ctx, e, err)
}
Eval is a convenience func that processes a nil Rule as a noop.
package eventrules
import (
	"context"
	"fmt"
	"sync"
	"github.com/mesos/mesos-go/api/v1/lib/executor"
)
type (
	evaler interface {
		Eval(context.Context, *executor.Event, error, Chain) (context.Context, *executor.Event, error)
	}
	Rule func(context.Context, *executor.Event, error, Chain) (context.Context, *executor.Event, error)
	Chain func(context.Context, *executor.Event, error) (context.Context, *executor.Event, error)
	Rules []Rule
	ErrorList []error
)
var (
	_ = evaler(Rule(nil))
	_ = evaler(Rules{})
)
func ChainIdentity(ctx context.Context, e *executor.Event, err error) (context.Context, *executor.Event, error) {
	return ctx, e, err
}