code: func NewSpan(ctx context.Context, tracer opentracing.Tracer, name string) (context.Context, opentracing.Span) {
  	span := opentracing.SpanFromContext(ctx)
  	spanCtx := span.Context()
  	span = tracer.StartSpan(name, opentracing.ChildOf(spanCtx))
  	ctx = opentracing.ContextWithSpan(ctx, span)
  	return ctx, span
  }
docs: // NewSpan pulls the span out of the context, creates a new child span, and updates the context
  // callers must call span.Finish() when done
  // important: the context must contain a span, otherwise you'll see a nilpointer panic here.