docs: function(k, v, opts) {
          var ctx = u.context(MEDIUM);
          logger.debugl(function() { return ['Invoke put(msgId=%d,key=%s,value=%s,opts=%s)',
                                             ctx.id, u.str(k), u.str(v), u.str(opts)]; });
          var decoder = p.decodePrevOrElse(opts, p.hasSuccess, p.complete(_.constant(undefined)));
          return futureKey(ctx, 0x01, k, p.encodeKeyValue(k, v), decoder, opts);
        }