我正在尝试调试一个非常不寻常的错误,我正在为一个简单的REST库I wrote收到。当连续发出多个请求时,Golang http请求会导致EOF错误

我使用标准的net/http软件包来获取,发布,放置,删除请求,但是当我连续发出多个请求时,我的测试偶尔会失败。我的测试是这样的:

func TestGetObject(t *testing.T) { 
    firebaseRoot := New(firebase_url) 
    body, err := firebaseRoot.Get("1") 
    if err != nil { 
     t.Errorf("Error: %s", err) 
    } 
    t.Logf("%q", body) 
} 

func TestPushObject(t *testing.T) { 
    firebaseRoot := New(firebase_url) 
    msg := Message{"testing", "1..2..3"} 
    body, err := firebaseRoot.Push("/", msg) 
    if err != nil { 
     t.Errorf("Error: %s", err) 
    } 
    t.Logf("%q", body) 
} 

而且我提出这样的要求:

// Send HTTP Request, return data 
func (f *firebaseRoot) SendRequest(method string, path string, body io.Reader) ([]byte, error) { 
url := f.BuildURL(path) 

// create a request 
req, err := http.NewRequest(method, url, body) 
if err != nil { 
    return nil, err 
} 

// send JSON to firebase 
resp, err := http.DefaultClient.Do(req) 
if err != nil { 
    return nil, err 
} 

if resp.StatusCode != http.StatusOK { 
    return nil, fmt.Errorf("Bad HTTP Response: %v", resp.Status) 
} 

defer resp.Body.Close() 
b, err := ioutil.ReadAll(resp.Body) 
if err != nil { 
    return nil, err 
} 

return b, nil 
} 

有时它的工作原理,但大部分时间我得到1个或2个故障:

--- FAIL: TestGetObject (0.00 seconds) 
firebase_test.go:53: Error: Get https://go-firebase-test.firebaseio.com/1.json: EOF 
firebase_test.go:55: "" 

--- FAIL: TestPushObject (0.00 seconds) 
firebase_test.go:63: Error: Post https://go-firebase-test.firebaseio.com/.json: EOF 
firebase_test.go:65: "" 
FAIL 
exit status 1 
FAIL github.com/chourobin/go.firebase 3.422s 

当我发出一个以上的请求时发生故障。如果我注释掉除PUT请求以外的所有内容,则测试一致通过。一旦我包括第二个测试,例如GET,其中一个或另一个失败(有时两个都通过)。

任何帮助表示赞赏,谢谢!