code: func SetFutureResult(future interface{}, cmd *Command, r Response) {
  	if r.IsError() {
  		future.(FutureResult).onError(newRedisError(r.GetMessage()))
  	} else {
  		switch cmd.RespType {
  		case BOOLEAN:
  			future.(FutureBool).set(r.GetBooleanValue())
  		case BULK:
  			future.(FutureBytes).set(r.GetBulkData())
  		case MULTI_BULK:
  			future.(FutureBytesArray).set(r.GetMultiBulkData())
  		case NUMBER:
  			future.(FutureInt64).set(r.GetNumberValue())
  		case STATUS:
  			future.(FutureBool).set(true)
  		case STRING:
  			future.(FutureString).set(r.GetStringValue())
  		case VIRTUAL:
  			// REVU - OK to treat virtual commands as FutureBool
  			future.(FutureBool).set(true)
  		}
  	}
  }
docs: // Sets the type specific result value from the response for the future reference
  // based on the command type.