       else
         # TODO: propogate this as standard error
         # throw new Error "no instance found to satisfy #{safePrintType constraint}"
-        return error: "No instance found to satisfy #{safePrintType constraint}"
+        return error: instanceLookupFailed constraint
       after = subLimit ctx.substitution
       # There was a functional dependency, renormalize
       if after isnt before

      isDeclaredConstraint = (c) ->
        entailed = entail ctx, unifiedType.constraints, c
      notDeclared = filter (__ _not, isDeclaredConstraint), checked = (substituteList ctx.substitution, constraints)
      try
      {success, error} = deferConstraints ctx, notDeclared
      if error
        throw new Error "Error when deferring #{name} #{error}"
      [deferredConstraints, retainedConstraints] = success
      if _notEmpty retainedConstraints
        ctx.extendSubstitution substitutionFail "#{name}'s context is too weak, missing #{listOf (map printType, retainedConstraints)}"
  else
    # log name, "constraints", (substituteList ctx.substitution, constraints)
    {success, error} = deferConstraints ctx,

    #   constraintsFromCanonicalType ctx, declaredType, finalType
    # else
      (reduceConstraints ctx, allConstraints).success
  if not reducedConstraints
    return jsNoop()
  if bare and _notEmpty reducedConstraints
    malformed ctx, expression, "Ambiguous class constraints: #{map safePrintType, reducedConstraints}"
    return "null";
