Seems like there's a bug with the current implementation. Assuming an unread chapter, if I click on the button twice then the chapter should be marked as read first, and then unread later. Instead the read state doesn't change on the second click, and I have to refresh the page to mark it as unread again. Viewing AJAX requests, it seems that the button acts according to the initial state, not the current one: if a chapter is initially unread, then the button sends a 'mark as read' request, then on the next click it still sends the same request instead of a 'mark as unread' request.
(also when sending multiple 'chapter_mark_read' requests, the first returns a 200 but subsequent requests return 500s)