fp-async
Demonstrates practical async patterns in TypeScript using TaskEither for clean error handling and API interactions.
Install this skill
Security score
The fp-async skill was audited on May 15, 2026 and we found 20 security issues across 1 threat category. Review the findings below before installing.
Categories Tested
Security Issues
Template literal with variable interpolation in command context
| 45 | const response = await fetch(`/api/users/${userId}`) |
Template literal with variable interpolation in command context
| 47 | throw new Error(`HTTP ${response.status}`) |
Template literal with variable interpolation in command context
| 52 | const posts = await fetch(`/api/users/${userId}/posts`) |
Template literal with variable interpolation in command context
| 54 | throw new Error(`HTTP ${posts.status}`) |
Template literal with variable interpolation in command context
| 84 | throw new Error(`HTTP ${response.status}: ${response.statusText}`) |
Template literal with variable interpolation in command context
| 92 | const getUser = (userId: string) => fetchJson<User>(`/api/users/${userId}`) |
Template literal with variable interpolation in command context
| 93 | const getPosts = (userId: string) => fetchJson<Post[]>(`/api/users/${userId}/posts`) |
Template literal with variable interpolation in command context
| 125 | (n) => new Error(`Expected positive, got ${n}`) |
Template literal with variable interpolation in command context
| 429 | const res = await fetch(`/api/users/${id}`) |
Template literal with variable interpolation in command context
| 432 | if (!res.ok) throw { _tag: 'NetworkError', cause: new Error(`HTTP ${res.status}`) } |
Template literal with variable interpolation in command context
| 599 | const getUser = (id: string) => api.get<User>(`/api/users/${id}`) |
Template literal with variable interpolation in command context
| 601 | const updateUser = (id: string, data: UpdateUserDto) => api.put<User>(`/api/users/${id}`, data) |
Template literal with variable interpolation in command context
| 602 | const deleteUser = (id: string) => api.delete(`/api/users/${id}`) |
Template literal with variable interpolation in command context
| 743 | (error) => T.of(`Error: ${error.message}`), |
Template literal with variable interpolation in command context
| 744 | (user) => T.of(`Welcome, ${user.name}!`) |
Template literal with variable interpolation in command context
| 828 | user => new Error(`User ${user.id} is not active`) |
Template literal with variable interpolation in command context
| 839 | TE.tap(user => TE.fromIO(() => console.log(`Fetched user: ${user.id}`))) |
Template literal with variable interpolation in command context
| 845 | TE.tapError(error => TE.fromIO(() => console.error(`Failed: ${error.message}`))) |
Template literal with variable interpolation in command context
| 904 | const res = await fetch(`/api/users/${id}`) |
Template literal with variable interpolation in command context
| 917 | const res = await fetch(`/api/users/${id}`) |