( self: Effect.Effect<A | undefined, E, R>, message: string, duration: Duration.Input = "5 seconds", )
| 159 | ) |
| 160 | |
| 161 | export const pollWithTimeout = <A, E, R>( |
| 162 | self: Effect.Effect<A | undefined, E, R>, |
| 163 | message: string, |
| 164 | duration: Duration.Input = "5 seconds", |
| 165 | ) => |
| 166 | Effect.gen(function* () { |
| 167 | while (true) { |
| 168 | const result = yield* self |
| 169 | if (result !== undefined) return result |
| 170 | yield* Effect.sleep("20 millis") |
| 171 | } |
| 172 | }).pipe( |
| 173 | Effect.timeoutOrElse({ |
| 174 | duration, |
| 175 | orElse: () => Effect.fail(new Error(message)), |
| 176 | }), |
| 177 | ) |
no outgoing calls