Skip to content

Commit 6232b66

Browse files
committed
Add a maximum delay to retry
1 parent 0254238 commit 6232b66

File tree

1 file changed

+5
-2
lines changed

1 file changed

+5
-2
lines changed

src/Network/HTTP/Affjax.purs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ import Data.Int (toNumber, round)
2828
import Data.Maybe (Maybe(..), maybe)
2929
import Data.Nullable (Nullable(), toNullable)
3030
import DOM.XHR (XMLHttpRequest())
31-
import Math (pow)
31+
import Math (max, pow)
3232
import Network.HTTP.Affjax.Request
3333
import Network.HTTP.Affjax.Response
3434
import Network.HTTP.Method (Method(..), methodToString)
@@ -148,14 +148,17 @@ retry milliseconds run req = do
148148
StatusCode 200 -> Right resp
149149
_ -> Left resp
150150

151+
-- maximum delay in milliseconds
152+
maxDelay = 30.0 * 1000.0
153+
151154
go failureVar n = do
152155
result <- run req
153156
case assert200 result of
154157
Right b -> pure b
155158
Left resp -> do
156159
putVar failureVar resp
157160
-- TODO: is this too steep?
158-
let delay = round $ toNumber 1000 * pow (toNumber 2) (toNumber (n - 1))
161+
let delay = round $ max maxDelay $ 1000.0 * (pow 2.0 $ toNumber (n - 1))
159162
later' delay $ go failureVar (n + 1)
160163

161164
-- | Run a request directly without using `Aff`.

0 commit comments

Comments
 (0)