func ExtraMetadata(ctx context.Context) (md metadata.MD, ok bool) {
	md, ok = ctx.Value(mdExtraKey{}).(metadata.MD)
	return
}
ExtraMetadata returns the incoming metadata in ctx if it exists.  The
returned MD should not be modified. Writing to it may cause races.
Modification should be made to copies of the returned MD.
package grpcutil
import (
	"context"
	"google.golang.org/grpc/metadata"
)
type mdExtraKey struct{}
func WithExtraMetadata(ctx context.Context, md metadata.MD) context.Context {
	return context.WithValue(ctx, mdExtraKey{}, md)
}