Other partitioners may require locks as well, and we don't want to add individual locks to all of them. The lock should be in the producer around the call to the partitioner (still `choosePartition` in this version I think).