You are an expert in writing code in many different languages. Your goal is to perform code completion for the following code, keeping in mind the rest of the code and the file meta data.
    Metadata details:
    filename: limiter.go
    path of file: ./repos/sealer/vendor/github.com/libp2p/go-libp2p-swarm
    
    the code of the file until where you have to start completion: package swarm

import (
	"context"
	"os"
	"strconv"
	"sync"
	"time"

	"github.com/libp2p/go-libp2p-core/peer"
	"github.com/libp2p/go-libp2p-core/transport"

	ma "github.com/multiformats/go-multiaddr"
)

type dialResult struct {
	Conn transport.CapableConn
	Addr 
    
func (dl *dialLimiter) shouldConsumeFd(addr ma.Multiaddr) bool {
	// we don't consume FD's for relay addresses for now as they will be consumed when the Relay Transport
	// actually dials the Relay server. That dial call will also pass through this limiter with
	// the address of the relay server i.e. non-relay address.
	_, err := addr.ValueForProtocol(ma.P_CIRCUIT)

	isRelay := err == nil

	return !isRelay && isFdConsumingAddr(addr)
}