diff --git a/request-server.go b/request-server.go
index 73899fa..057834c 100644
--- a/request-server.go
+++ b/request-server.go
@@ -144,7 +144,7 @@
 			} else {
 				request = requestFromPacket(
 					&sshFxpStatPacket{ID: pkt.id(), Path: request.Filepath})
-				rpkt = request.handle(rs.Handlers)
+				rpkt = request.callHandler(rs.Handlers)
 			}
 		case *sshFxpFsetstatPacket:
 			handle := pkt.getHandle()
@@ -156,7 +156,7 @@
 					&sshFxpSetstatPacket{ID: pkt.id(), Path: request.Filepath,
 						Flags: pkt.Flags, Attrs: pkt.Attrs,
 					})
-				rpkt = request.handle(rs.Handlers)
+				rpkt = request.callHandler(rs.Handlers)
 			}
 		case hasHandle:
 			handle := pkt.getHandle()
@@ -165,11 +165,11 @@
 			if !ok {
 				rpkt = statusFromError(pkt, syscall.EBADF)
 			} else {
-				rpkt = request.handle(rs.Handlers)
+				rpkt = request.callHandler(rs.Handlers)
 			}
 		case hasPath:
 			request := requestFromPacket(pkt)
-			rpkt = request.handle(rs.Handlers)
+			rpkt = request.callHandler(rs.Handlers)
 		default:
 			return errors.Errorf("unexpected packet type %T", pkt)
 		}
diff --git a/request.go b/request.go
index db5528a..0a5b88b 100644
--- a/request.go
+++ b/request.go
@@ -165,7 +165,7 @@
 }
 
 // called from worker to handle packet/request
-func (r *Request) handle(handlers Handlers) responsePacket {
+func (r *Request) callHandler(handlers Handlers) responsePacket {
 	switch r.Method {
 	case "Get":
 		return fileget(handlers.FileGet, r)
diff --git a/request_test.go b/request_test.go
index aff257e..7681627 100644
--- a/request_test.go
+++ b/request_test.go
@@ -122,7 +122,7 @@
 	request := testRequest("Get")
 	// req.length is 5, so we test reads in 5 byte chunks
 	for i, txt := range []string{"file-", "data."} {
-		pkt := request.handle(handlers)
+		pkt := request.callHandler(handlers)
 		dpkt := pkt.(*sshFxpDataPacket)
 		assert.Equal(t, dpkt.id(), uint32(i+1))
 		assert.Equal(t, string(dpkt.Data), txt)
@@ -132,9 +132,9 @@
 func TestRequestPut(t *testing.T) {
 	handlers := newTestHandlers()
 	request := testRequest("Put")
-	pkt := request.handle(handlers)
+	pkt := request.callHandler(handlers)
 	statusOk(t, pkt)
-	pkt = request.handle(handlers)
+	pkt = request.callHandler(handlers)
 	statusOk(t, pkt)
 	assert.Equal(t, "file-data.", handlers.getOutString())
 }
@@ -142,11 +142,11 @@
 func TestRequestCmdr(t *testing.T) {
 	handlers := newTestHandlers()
 	request := testRequest("Mkdir")
-	pkt := request.handle(handlers)
+	pkt := request.callHandler(handlers)
 	statusOk(t, pkt)
 
 	handlers.returnError()
-	pkt = request.handle(handlers)
+	pkt = request.callHandler(handlers)
 	assert.Equal(t, pkt, statusFromError(pkt, errTest))
 }
 
@@ -155,7 +155,7 @@
 func TestRequestInfoStat(t *testing.T) {
 	handlers := newTestHandlers()
 	request := testRequest("Stat")
-	pkt := request.handle(handlers)
+	pkt := request.callHandler(handlers)
 	spkt, ok := pkt.(*sshFxpStatResponse)
 	assert.True(t, ok)
 	assert.Equal(t, spkt.info.Name(), "request_test.go")
@@ -164,7 +164,7 @@
 func testInfoMethod(t *testing.T, method string) {
 	handlers := newTestHandlers()
 	request := testRequest(method)
-	pkt := request.handle(handlers)
+	pkt := request.callHandler(handlers)
 	npkt, ok := pkt.(*sshFxpNamePacket)
 	assert.True(t, ok)
 	assert.IsType(t, sshFxpNameAttr{}, npkt.NameAttrs[0])
