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: enhancer.go
    path of file: ./repos/highlight/backend/stacktraces
    
    the code of the file until where you have to start completion: package stacktraces

import (
	"context"
	"crypto/tls"
	"encoding/base64"
	"fmt"
	"io"
	"net/http"
	"net/url"
	"os"
	"path"
	"regexp"
	"strings"

	"github.com/go-sourcemap/sourcemap"
	privateModel "github.com/highlight-run/highlight/backend/private-graph/graph/model"
	publicModel "github.com/highlig
    
func getFileSourcemap(ctx context.Context, projectId int, version *string, stackTraceFileURL string, storageClient storage.Client, stackTraceError *privateModel.SourceMappingError) (sourceMapURL string, sourceMapFileBytes []byte, err error) {
	pathSubpath := fmt.Sprintf("%s.map", stackTraceFileURL)
	sourcemapFetchStrategy := "S3"
	stackTraceError.SourcemapFetchStrategy = &sourcemapFetchStrategy
	for sourceMapFileBytes == nil {
		sourceMapFileBytes, err = storageClient.ReadSourceMapFile(ctx, projectId, version, pathSubpath)
		if err != nil {
			if pathSubpath == "" {
				// SOURCEMAP_ERROR: could not find source map file in s3
				// (user-facing error message can include all the paths searched)
				stackTraceErrorCode := privateModel.SourceMappingErrorCodeMissingSourceMapFileInS3
				stackTraceError.ErrorCode = &stackTraceErrorCode
				return "", nil, e.Wrapf(err, "failed to match file-scheme sourcemap for js file %s", stackTraceFileURL)
			}
			pathSubpath = strings.Join(strings.Split(pathSubpath, "/")[1:], "/")
		} else {
			sourceMapURL = pathSubpath
			break
		}
	}
	return
}