Implementing WiFi integration for blocking/non-blocking operations stalls forever

I am currently implementing a WiFi driver integration which is supposed to handle blocking and non blocking operations.

Right now I do not understand how the Socket is notified when an API call of the NetworkStack method i.e. socket_receivefrom returns NSAPI_ERROR_WOULD_BLOCK when the operation is actually done. Right now it seems that the UDPSocket x; x.receive(...); blocks forever with my implementation, which makes sense since there is no notification between the ISR (+ msg decoding + …) received and the Socket state.

How is this done? Can anyone point me to relevant information (besides this which is not sufficient ?