Add a RWMutex to errorTemplates to make formatErrorDescription thread-safe.
diff --git a/errors.go b/errors.go
index f22fa65..f69f22d 100644
--- a/errors.go
+++ b/errors.go
@@ -2,10 +2,18 @@
 
 import (
 	"bytes"
+	"sync"
 	"text/template"
 )
 
-var errorTemplates *template.Template
+var errorTemplates errorTemplate = errorTemplate{template.New("errors-new"),sync.RWMutex{}}
+
+// template.Template is not thread-safe for writing, so some locking is done
+// sync.RWMutex is used for efficiently locking when new templates are created
+type errorTemplate struct {
+	*template.Template
+	sync.RWMutex
+}
 
 type (
 	// RequiredError. ErrorDetails: property string
@@ -241,14 +249,17 @@
 	var descrAsBuffer bytes.Buffer
 	var err error
 
-	if errorTemplates == nil {
-		errorTemplates = template.New("all-errors")
-	}
-
+	errorTemplates.RLock()
 	tpl = errorTemplates.Lookup(s)
+	errorTemplates.RUnlock()
+
 	if tpl == nil {
+		errorTemplates.Lock()
 		tpl = errorTemplates.New(s)
+
 		tpl, err = tpl.Parse(s)
+		errorTemplates.Unlock()
+
 		if err != nil {
 			return err.Error()
 		}