Pass actual errors from FileReader/FileWriter implementations

Fixes #163
diff --git a/request-server_test.go b/request-server_test.go
index 5fe410f..643d05a 100644
--- a/request-server_test.go
+++ b/request-server_test.go
@@ -165,7 +165,7 @@
 	contents := make([]byte, 5)
 	n, err := rf.Read(contents)
 	assert.Equal(t, n, 0)
-	assert.IsType(t, &StatusError{}, err)
+	assert.Exactly(t, os.ErrNotExist, err)
 }
 
 func TestRequestOpen(t *testing.T) {
diff --git a/request.go b/request.go
index 950861a..8a1855e 100644
--- a/request.go
+++ b/request.go
@@ -143,7 +143,7 @@
 	if reader == nil {
 		reader, err = h.Fileread(r)
 		if err != nil {
-			return nil, syscall.EBADF
+			return nil, err
 		}
 		r.setState(reader)
 	}
@@ -168,7 +168,7 @@
 	if writer == nil {
 		writer, err = h.Filewrite(r)
 		if err != nil {
-			return nil, syscall.EBADF
+			return nil, err
 		}
 		r.setState(writer)
 	}