I have the below code:
  const incompleteKYCClaims = await Promise.all(
    kycPendingProviders.map(async (p) => {
      const provider = await getProviderOrThrow(p.tin)
      const isPreviouslyApproved = provider.stripeAccount != undefined    
      if (isPreviouslyApproved) {
        return
      }
    
      return toProviderRelationshipClaims({ tin: p.tin, role: ProviderUserSubRoles.ky, status: 'KYCInDraft' })
    })
  )
  const incompleteKYCClaimsFiltered = incompleteKYCClaims.filter(
    (claim) => claim
  ) as Array<ProviderRelationshipClaims>
It is working correctly. However, I would like to combine the map and filter passes into a single reduce pass. For that, wrote the below:
  const incompleteKYCClaims = kycPendingProviders.reduce<Array<ProviderRelationshipClaims>>( async (filtered, p) => {
    const provider = await getProviderOrThrow(p.tin)
    const isPreviouslyApproved = previouslyApproved.includes(provider.status)
    if (!isPreviouslyApproved) {
      filtered.push(toProviderRelationshipClaims({tin: p.tin, role: ProviderUserSubRoles.ky, status: 'KYCInDraft'}))
    }
    return filtered
  }, Promise.resolve([]) as Array<ProviderRelationshipClaims>
The reduce version is not working. The error is: Argument of type '(filtered: ProviderRelationshipClaims[], p: ProviderRelationship) => Promise<ProviderRelationshipClaims[]>' is not assignable to parameter of type '(previousValue: ProviderRelationshipClaims[], currentValue: ProviderRelationship, currentIndex: number, array: ProviderRelationship[]) => ProviderRelationshipClaims[]'.
How could I rewrite the reduce version so there are no problems?
