diff --git a/worker/types/worker.go b/worker/types/worker.go index 61b96da..ee2f9a3 100644 --- a/worker/types/worker.go +++ b/worker/types/worker.go @@ -87,13 +87,16 @@ func (worker *Worker) ProcessMessage(msg WorkerMessage) WorkerMessage { } if inResponseTo := msg.InResponseTo(); inResponseTo != nil { worker.Lock() - if f, ok := worker.actionCallbacks[inResponseTo.getId()]; ok { + f, ok := worker.actionCallbacks[inResponseTo.getId()] + worker.Unlock() + if ok { f(msg) if _, ok := msg.(*Done); ok { + worker.Lock() delete(worker.actionCallbacks, inResponseTo.getId()) + worker.Unlock() } } - worker.Unlock() } return msg } @@ -106,13 +109,16 @@ func (worker *Worker) ProcessAction(msg WorkerMessage) WorkerMessage { } if inResponseTo := msg.InResponseTo(); inResponseTo != nil { worker.Lock() - if f, ok := worker.messageCallbacks[inResponseTo.getId()]; ok { + f, ok := worker.messageCallbacks[inResponseTo.getId()] + worker.Unlock() + if ok { f(msg) if _, ok := msg.(*Done); ok { + worker.Lock() delete(worker.messageCallbacks, inResponseTo.getId()) + worker.Unlock() } } - worker.Unlock() } return msg }