diff --git a/workerpool.go b/workerpool.go
index <HASH>..<HASH> 100644
--- a/workerpool.go
+++ b/workerpool.go
@@ -194,12 +194,11 @@ func (wp *workerPool) workerFunc(ch *workerChan) {
 	defer func() {
 		if r := recover(); r != nil {
 			wp.Logger.Printf("panic: %s\nStack trace:\n%s", r, debug.Stack())
+			if c != nil {
+				c.Close()
+			}
 		}
 
-		if c != nil {
-			c.Close()
-			wp.release(ch)
-		}
 		wp.lock.Lock()
 		wp.workersCount--
 		wp.lock.Unlock()
workerpool: bugfix: do not return workerChan to ready pool on panic