Is it not unexpected to get a connection to arbiter when asking for read/write connection?
Have you verified that we don't actually return a connection to the arbiter rather then a real secondary?