         let document = try firstDocument(in: try execute(command: command))
         
         guard document["ok"].int32 == 1 else {
-            throw MongoError.CommandFailure
+            throw MongoError.CommandFailure // TODO: Make this more specific
         }
     }
 }
        try self.challenge(with: details, using: (nonce: nonce, response: responseDocument, scram: auth))
    }
    
    /// Authenticate with MongoDB Challenge Response
    /// TODO: Set a timeout for connecting
    internal func authenticate(mongoCR details: (username: String, password: String, against: String)) throws {
        // Get the server's nonce
        let response = try self.execute(command: [

    }
}

/// Authentication extensions
extension Database {
    /// Generates a random String
    ///
    /// - returns: A random nonce
    private func randomNonce() -> String {
        let allowedCharacters = "!\"#'$%&()*+-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_$"
        
