I'd be wary of code using socket timeouts like that. Because an operation takes longer than some number of milliseconds to return a result doesn't mean the operation hasn't completed. Imagine you send an update with `safe=True` (now the default), but wait only 1ms for it to return an answer; the write may still happen, but you will get a timeout in your application, and believe the write hasn't succeeded (or at least not know whether it has). Worse, this will force reconnections, which can have the result of slowing your application even more.

I'm not necessarily opposed to exposing these settings, but I would caution anyone using them for application performance reasons.