code: func ContextWithSpanFromContext(ctx, ctx2 context.Context) context.Context {
  	// if already is a span then noop
  	if span := opentracing.SpanFromContext(ctx); span != nil {
  		return ctx
  	}
  	if span := opentracing.SpanFromContext(ctx2); span != nil {
  		return opentracing.ContextWithSpan(ctx, span)
  	}
  	return ctx
  }
docs: // ContextWithSpanFromContext sets the tracing span of a context from other
  // context if one is not already set. Alternative would be
  // context.WithoutCancel() that would copy the context but reset ctx.Done