     func getMore() -> EventLoopFuture<Void> {
         return GetMore(cursorId: self.id, batchSize: batchSize, on: self.collection)
             .execute(on: self.collection.connection)
-            .map { reply -> Void in
+            .thenThrowing { reply -> Void in
                 self.id = reply.cursor.id
-                self.buffer = reply.cursor.nextBatch.map(self.mapping)
+                self.buffer = try reply.cursor.nextBatch.map(self.mapping)
             }
     }
     

        self.mapping = mapping
    }
    
    func map<T>(_ transform: (Element) throws -> T) -> Cursor<T> {
        unimplemented()
    }
    
    public func forEach(_ body: @escaping (Element) throws -> Void) -> EventLoopFuture<Void> {

import NIO

public final class Cursor<Element> {
    typealias Mapping = (Document) throws -> Element
    
    var id: Int64
    var buffer: [Element]
