diff --git a/app/src/main/java/audio/funkwhale/ffa/utils/Extensions.kt b/app/src/main/java/audio/funkwhale/ffa/utils/Extensions.kt
index 0a250a528c2f6b6e6efcd3151cbd7c1d2917a6ad..af35567b74d9c0490cd5b8b53e59865790f6b5f2 100644
--- a/app/src/main/java/audio/funkwhale/ffa/utils/Extensions.kt
+++ b/app/src/main/java/audio/funkwhale/ffa/utils/Extensions.kt
@@ -76,8 +76,13 @@ fun Request.authorize(context: Context, oAuth: OAuth): Request {
           val old = state.accessToken
           val auth = ClientSecretPost(oAuth.state().clientSecret)
           val done = CompletableDeferred<Boolean>()
+          val tokenService = oAuth.service(context)
 
-          state.performActionWithFreshTokens(oAuth.service(context), auth) { token, _, _ ->
+          state.performActionWithFreshTokens(tokenService, auth) { token, _, e ->
+            if (e != null) {
+              Log.e("Request.authorize()", "performActionWithFreshToken failed: ${e}")
+              Log.e("Request.authorize()", Log.getStackTraceString(e))
+            }
             if (token == old) {
               Log.i("Request.authorize()", "Accesstoken not renewed")
             }
@@ -88,6 +93,7 @@ fun Request.authorize(context: Context, oAuth: OAuth): Request {
             done.complete(true)
           }
           done.await()
+          tokenService.dispose()
           return@runBlocking this
         }
       }
diff --git a/app/src/main/java/audio/funkwhale/ffa/utils/OAuth.kt b/app/src/main/java/audio/funkwhale/ffa/utils/OAuth.kt
index 5164358ed4cf105b08f8859cb03b055470f025f5..9a637a0ebc349afca936103fa479cfd277df2055 100644
--- a/app/src/main/java/audio/funkwhale/ffa/utils/OAuth.kt
+++ b/app/src/main/java/audio/funkwhale/ffa/utils/OAuth.kt
@@ -98,15 +98,22 @@ class OAuth(private val authorizationServiceFactory: AuthorizationServiceFactory
     return if (state.refreshToken != null) {
       val refreshRequest = state.createTokenRefreshRequest()
       val auth = ClientSecretPost(state.clientSecret)
+      val refreshService = service(context)
       runBlocking {
-        service(context).performTokenRequest(refreshRequest, auth) { response, e ->
-          state.apply {
-            Log.i("OAuth", "applying new authState")
-            update(response, e)
-            save()
+        refreshService.performTokenRequest(refreshRequest, auth) { response, e ->
+          if (e != null) {
+            Log.e("OAuth", "performTokenRequest failed: ${e}")
+            Log.e("OAuth", Log.getStackTraceString(e))
+          } else {
+            state.apply {
+              Log.i("OAuth", "applying new authState")
+              update(response, e)
+              save()
+            }
           }
         }
       }
+      refreshService.dispose()
       true
     } else {
       false
@@ -202,17 +209,23 @@ class OAuth(private val authorizationServiceFactory: AuthorizationServiceFactory
 
       AuthorizationResponse.fromIntent(authorization)?.let {
         val auth = ClientSecretPost(state().clientSecret)
-
-        service(context).performTokenRequest(it.createTokenExchangeRequest(), auth) { response, e ->
-          state
-            .apply {
-              update(response, e)
-              save()
-            }
+        val requestService = service(context)
+
+        requestService.performTokenRequest(it.createTokenExchangeRequest(), auth) { response, e ->
+          if (e != null) {
+            Log.e("FFA", "performTokenRequest failed: ${e}")
+            Log.e("FFA", Log.getStackTraceString(e))
+          } else {
+            state.apply {
+                update(response, e)
+                save()
+              }
+          }
 
           if (response != null) success()
           else Log.e("FFA", "performTokenRequest() not successful")
         }
+        requestService.dispose()
       }
     }
   }