func (s *WorkerState) executeSell(log bitwrk.Logger, sell *SellActivity, interrupt <-chan bool) { defer func() { s.cond.L.Lock() s.Blockers-- s.cond.Broadcast() s.cond.L.Unlock() }() defer sell.Dispose() if err := sell.PerformSell(log.Newf("Sell #%v", sell.GetKey()), s.m.receiveManager, interrupt); err != nil { s.LastError = fmt.Sprintf("Error performing sell (delaying next sell by 20s): %v", err) log.Println(s.LastError) s.cond.L.Lock() s.blockFor(20 * time.Second) s.cond.L.Unlock() } else { log.Printf("Returned from PerformSell successfully") } }