code: @InterfaceStability.Experimental
      @InterfaceAudience.Public
      public Single<JsonDocument> getFirstPrimaryOrReplica(final String id, final Bucket bucket) {
          return getFirstPrimaryOrReplica(id, bucket, bucket.environment().kvTimeout());
      }
docs: Asynchronously fetch the document from the primary and if that operations fails try
  all the replicas and return the first document that comes back from them (using the
  environments KV timeout for both primary and replica).
  
  
  @param id the document ID to fetch.
  @param bucket the bucket to use when fetching the doc.
  @return an {@link Single} with either 0 or 1 {@link JsonDocument}.