func NewRunnerSync(ctx context.Context, thr Throttler) Runner {
	ctx, cancel := context.WithCancel(ctx)
	r := rsync{thr: thr, ctx: ctx}
	r.report = func(err error) {
		if err != nil {
			if r.err == nil {
				r.err = err
				cancel()
			}
			log("sync runner error happened: %v", err)
		}
	}
	return &r
}
NewRunnerSync creates synchronous runner instance
that runs a set of `Runnable` consecutively
with regard to the provided context and throttler.
First occurred error is returned from result.
package gohalt
import (
	"context"
	"sync"
)
type Runner interface {
	Run(Runnable)
	Result() error
}
type rsync struct {
	thr    Throttler
	ctx    context.Context
	err    error
	report func(error)
}