> I believe that cursors shouldn't have to know about nodes except for keeping track of the one that was used for subsequent requests.

I completely agree, that's why I noted it probably wouldn't work here. 

I'm still mulling this over since I saw your comment this morning and don't have an answer I like yet. I was just pointing out that having `client` keep track of it seems wrong to me as well. Pushing this responsibility to `cluster` and keeping `client`'s knowledge of what's happening inside cluster minimal seems more appropriate.

I suppose it doesn't matter though since the URI parser used in `client` would be exposed this level of detail anyway.

I'm just thinking out loud here, but what do you think about something like this:

```ruby
cluster.type_of?(:single_node)
cluster.type_of?(:replica_set)
cluster.type_of?(:sharded_cluster)
```